BigNums——HDUOJ 1042
来源:互联网 发布:电脑如何彻底卸载软件 编辑:程序博客网 时间:2024/05/21 11:33
原题:
Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
Input
One N in one line, process to the end of file
Output
For each N, output N! in one line.
Sample Input
1
2
3
1
2
6
解题思路:
- 建立一个整形数组sum[],每个数组元素存五位数,大于五位的 num/100000进位,num%100000存起来(可以理解为万进制)
- 最后就是格式必须把空缺的0给补上,可用“%05d”,最高位不用补0。
代码:
#include <stdio.h>#include <cstring>int sum[50000]; //每个元素存5位数字void NNNN(int N) //N阶层计算{ int CarryBit; //进位数字 int num; int i; //阶层数 int j; int k = 0; //数组sum已拥有有效的元素 数目 for (i = 1; i <= N; i++) //阶层 { CarryBit = 0; for (j = 0; j <= k; j++) { num = sum[j] * i + CarryBit; if (num > 99999) //数目是否超过5位 { CarryBit = num / 100000;//取整得进位 } else { CarryBit = 0; } sum[j] = num % 100000; //取余 //最高位的时候,也有进位,则需扩展k值 if (j == k && CarryBit != 0) { k++; sum[k] = CarryBit; break; } } } //输出 for (i = k; i >= 0; i--) { if (i == k) { printf("%d", sum[i]); } else { printf("%05d", sum[i]); } } printf("\n");}int main(){ int N; while (scanf("%d", &N)!=EOF) { if (N < 0)continue; memset(sum, 0, sizeof(sum)); sum[0] = 1; //初始值为1(乘法) NNNN(N); }}
阅读全文
0 0
- BigNums——HDUOJ 1042
- BigNums——HDUOJ 1002
- BigNums——HDUOJ 1047
- BigNums——HDUOJ 1063
- BigNums——HDUOJ 1316
- BigNums——HDUOJ 1715
- BigNums
- BigNums—— 斐波那契 预处理(代码)
- hduoj 4196 ——Remoteland
- Combinatorics——HDUOJ 1027
- Combinatorics——HDUOJ 1085
- Combinatorics——HDUOJ 1100
- Combinatorics——HDUOJ 1171
- Combinatorics——HDUOJ 1261
- Combinatorics——HDUOJ 1398
- Combinatorics——HDUOJ 1028
- Combinatorics——HDUOJ 1294
- Math——HDUOJ 1215
- pub转ppk及windows下用putty执行脚本
- Mysql 字段拼接函数
- 西瓜书《机器学习》课后答案——chapter7
- tomcat和servlet的context
- 百度地图发布版SHA1查找的命令
- BigNums——HDUOJ 1042
- mysql数据库Too many connections报错排查
- 《技术转移服务规范》国家标准批准发布,技术转移将更加规范
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) D. Sorting the Coins 乱搞
- iPhone X适配需要注意事项
- 理解 JMeter 聚合报告(Aggregate Report)
- map的用法
- 自学Java与学历入门的关联
- oracle11g数据库如何正确导入dmp文件数据