1000的阶乘
2017-03-16 18:22
253 查看
用字符串存储大数
#include <iostream> using namespace std; int multi(char a, char b) { return (a - '0') * (b - '0'); } void strMulti(char *a, char *b, char *c) { // 最好对a,b和c的合法性进行判断 int lenA = strlen(a); int lenB = strlen(b); int maxLen = lenA + lenB; int *p = new int[maxLen]; memset(p, 0, maxLen * sizeof(int)); // 千万要注意不要写成memset(p, 0, maxLen); int i, j; for(j = lenB - 1; j >= 0; j--) { for(i = lenA - 1; i >= 0; i--) { p[j + i + 1] += multi(b[j], a[i]); } } // 处理进位操作 for(i = maxLen - 1; i >= 1; i--) { p[i - 1] += p[i] / 10; p[i] = p[i] % 10; } int index=0; if(p[0]==0) index++; for(index;index<maxLen;index++){ *c++=p[index]+'0'; } *c='\0'; } void main(){ int num; cin>>num; char str[5000]; *str='1'; *(str+1)='\0'; char tmp[50]; for(int i=1;i<=num;i++){ itoa(i,tmp,10); strMulti(str,tmp,str); } cout<<str<<endl; }
相关文章推荐
- Java杂记——大数操作(1000的阶乘问题)
- 1000的阶乘有多少位
- 程序求1!+2!+3!+...+1000!的和, 求1到1000阶乘之和
- T 4000 est_Java_递归练习(1000的阶乘所有零和尾部零的个数)
- 求1000的阶乘尾部0的个数
- 打印1000以内阶乘
- 高精度 求1000以内阶乘 (初学)C++版
- 大整数阶乘的运算(可以计算1000!) .
- 1000的阶乘等于多少?
- Java_21_22_for循环_【最后执行迭代】_练习_奇数偶数_打印1-1000/5的整数_1-10的阶乘_99乘法表
- 1000之内整数的阶乘
- 求解N的阶乘(N&lt;=1000)
- 求N的阶乘(求1000的阶乘)--大数问题
- //计算n=1000的阶乘。
- 高精度加减法 1000阶乘求法
- C语言大数乘法求1000的阶乘(九度OJ 1076)
- 杭电oj1000阶乘
- 大数运算_求1000的阶乘(C语言实现)
- 1000的阶乘-HDU 1042-大数阶乘(万进制思想)
- 1000!(1000的阶乘)中有几个2-----三个数组