【算法】大数阶乘的实现。读入一个自然数N,将N的阶乘结果数值的每一位数字相加,返回相加之和。
2018-09-10 15:35
330 查看
// // Created by on 9/10/2018. // 大数阶乘的实现. // #include <iostream> #include <math.h> void carryme(int bit[],int pos) { int i,carrayou = 0; // for(i = 0; i <= pos; i++) // { bit[i] += carrayou; // // if(bit[i] <= 9) // // carrayou = 0; else if(bit[i] > 9 && i < pos) // { // carrayou = bit[i]/10; // // bit[i] = bit[i]%10; // } // else if(bit[i] > 9 && i >= pos) // { // while(bit[i] > 9) // { // carrayou = bit[i]/10; // // bit[i] = bit[i]%10; // // i++; // bit[i] = carrayou; } } } } int BigBigDataDataFactorial() { int num,pos,digital,i,j; // double sum = 0; // int *fact; // scanf("%d",&num); for(i = 1; i <= num; i++) sum += log10(i); // digital = (int)sum + 1; // if(!(fact = (int*)malloc((digital+1)*sizeof(int)))) { // return 0; } // for(i = 0; i <= digital; i++) fact[i] = 0; fact[0] = 1; // for(i = 2; i <= num; i++) { // for(j = digital; j >= 0; j--) { // if(fact[j] != 0) { pos = j; break; // } } for(j = 0; j <= pos; j++) fact[j] *= i; carryme(fact,pos); } // for(j = digital; j >= 0; j--) if(fact[j] != 0) { pos = j; break; } int res=0; // for(i = pos; i >= 0; i--) { res += fact[i]; } // printf("%d",res); return 1; } int main() { BigBigDataDataFactorial(); }阅读更多
相关文章推荐
- 实现一个数值加法函数,返回两个数字的和。要求能进行参数验证,若参数不是数字或为空则抛出异常。
- java实现读入一个数n,计算其各位数字之和,用汉语拼音写出和的每一位数字
- 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字
- 【PAT】【C++】读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
- 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。 输出格式:在一行内输出n的各位数字之和
- 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。 源程序
- 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
- C语言解决读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
- 6-6 求单链表结点的阶乘和(15 分) 本题要求实现一个函数,求单链表L结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int范围内。
- 如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗? 显然,这个值是介于2和3之间的一个数字。 请把x的值计算到小数后6位(四舍五入),并填写这个小数值。 注意:只填写一
- 读入一个数n,计算其各位数字之和,用汉语拼音写出和的每一位数字
- 【LeetCode-面试算法经典-Java实现】【129-Sum Root to Leaf Numbers(全部根到叶子结点组组成的数字相加)】
- 008实现一个算法从一个单链表中返回倒数第n个元素(keep it up)
- ObjC 实现的大数相加,大数相乘和n的阶乘
- 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代
- 自己写的关于实现数字阶乘的方法,一个采用普通方法,一个是采用递归
- 利用C/C++实现从文件读入到子程序中调用返回结果
- leetcode实现 “10001”+“1011” 返回二进制相加的结果
- 某公司面试题:最长顺子;输入很多个整数(1<=数值<=13),返回其中可能组成的 最长的一个顺子(顺子中数的个数代表顺的长度); 其中数字1也可以当作14用
- 原串翻转 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串