大数相乘nyoj28
2013-08-19 22:34
246 查看
描述我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入输入一个整数m(0<m<=5000)输出输出m的阶乘,并在输出结束之后输入一个换行符样例输入
样例输出
View Code
把第二个数分别与第一个数的个位、十位等相乘
输入输入一个整数m(0<m<=5000)输出输出m的阶乘,并在输出结束之后输入一个换行符样例输入
50
样例输出
30414093201713378043612608166064768844377641568960512000000000000
#include <stdio.h> #include <string.h> #define M 20000 int shu[M]; int main() { int m, i, n, b, t, e; while(scanf("%d", &m) != EOF){ memset(shu, 0, sizeof(shu)); shu[0] = 1; n = 0;/*n表示存放进位*/ for(i = 1; i <= m; i++) { t = 0;/*t表示进位的数值*/ e = 0;//记得初始化 for(b = 0; b <= n; b++) { // shu[b] *= i; // shu[b+1] = shu[b] / 10; // shu[b] %= 10; e = shu[b] * i + t; t = e / 10; shu[b] = e % 10; if(b == n && t != 0)/*为什么要有个b == n?因为有时不是在最高位进1,会产生多余的n++影响输出结果*/ n++; } } for(i = n; i >= 0; i--){ printf("%d", shu[i]); } putchar('\n'); } return 0; }
View Code
把第二个数分别与第一个数的个位、十位等相乘
相关文章推荐
- NYOJ 28 大数阶乘
- NYOJ28--大数阶乘
- nyoj28 大数阶乘
- nyoj 28 大数阶乘
- nyoj 28大数阶乘
- nyoj28大数阶乘
- NYOJ 28 大数阶乘
- 【大数阶乘】NYOJ-28
- NYOJ 28 (大数阶乘)
- NYOJ 28 大数阶乘
- NYOJ-28-大数阶乘-2013年08月16日09:27:05
- nyoj28_大数阶乘
- NYOJ 28 大数阶乘
- nyoj.28 大数阶乘【大数问题】 2015/03/09
- NYOJ 28 大数阶乘
- NYOJ 28 大数阶乘
- NYOJ 28 大数阶乘 HDOJ 1042 N!
- NYOJ-28 大数阶乘
- nyoj28大数阶乘
- NYOJ28 大数阶乘