UVA 623 [big numebr]
来源:互联网 发布:手机编程有什么输入法 编辑:程序博客网 时间:2024/04/29 06:08
Thinking : In initialization, we will compute the factorial from 0! to 1000!. Or we will get TLE.
ps: don't forget 0!
AC code:
#include<iostream>#include<cstring>using namespace std;int bit[1001][8];int factorial[1001][3000];void init(){for (int i = 1; i <= 1000; i++)bit[i][0] = 0;int t;for (int i = 1; i <= 1000; i++){t = i;while (t != 0){bit[i][++bit[i][0]] = t % 10;t /= 10;}}memset(factorial, 0, sizeof(factorial));factorial[1][0] = 1;factorial[1][1] = 1;for (int i = 2; i <= 1000; i++){int j = i - 1;for (int a = 1; a <= bit[i][0]; a++)for (int b = 1; b <= factorial[j][0]; b++){factorial[i][a + b - 1] += bit[i][a] * factorial[j][b];}factorial[i][0] = bit[i][0] + factorial[j][0]-1;int flag = 0;for (int s = 1; s <= factorial[i][0]; s++){factorial[i][s] += flag;flag = factorial[i][s] / 10;factorial[i][s] %= 10;}while (flag){factorial[i][++factorial[i][0]] = flag % 10;flag /= 10;}}}int main(){int N;init();while (scanf("%d", &N) != EOF){printf("%d!\n", N);if (N == 0){printf("1\n");continue;}for (int i = factorial[N][0]; i >= 1; i--)printf("%d", factorial[N][i]);printf("\n");}return 0;}
1 0
- UVA 623 [big numebr]
- UVa 10970 - Big Chocolate
- uva 10970 Big Chocolate
- UVA 10970 - Big Chocolate
- UVa 374 Big Mod
- uva 10970 - Big Chocolate
- UVa 374 - Big Mod
- Uva-10970-Big Chocolate
- UVA 10970 Big Chocolate
- UVA 10970 Big Chocolate
- UVa 10970 - Big Chocolate
- UVA 10970 Big Chocolate
- uva 10970 Big Chocolate
- Uva - 10970 - Big Chocolate
- uva 10970 - Big Chocolate
- uva 10970 Big Chocolate
- UVa 10970 - Big Chocolate
- UVA 10970 Big Chocolate
- 告别CSDN
- deep learning: heat Map
- Android自定义alertDialog和对话框中的点击事件
- 柴俊理金:6、22午夜黄金,宁贵沥青操作策略
- python 分组匹配与匹配对象使用
- UVA 623 [big numebr]
- 让用户输入一个正整数,判断该数是不是素数(质数)
- hdu2222 Keywords Search
- thinkphp post分页 参数丢失问题
- MLiA 逻辑回归 求解回归函数的系数中梯度下降法及其向量化
- 学习Python过程中遇到的错误总结
- 多通道(比如RGB三通道)卷积过程
- Windows常用command line操作
- 利用Python实现冒泡排序