大数阶乘--------------------------南阳理工学院题目28
来源:互联网 发布:哔哩哔哩动画mac下载 编辑:程序博客网 时间:2024/05/31 19:03
题目链接:南阳理工学院(虽然我不是在这个OJ提交的,另一个不便透漏)
大家都阶乘结果递增很快,若int存数据,很容易溢出,怎么办,怎么办?
曾经和大神一块写题时,我发现他用过10000进制。我做这道大数阶乘题时就试了试,没想到效果这么好,计算速度超级快,而且数据可以很大很大。不信看下面
用一个一维数组表示一个大数,下标从0,1,2,3,...意为从低位到高位。数组中的每一个元素都表示一个10000进制的位。
例如:12! = 479001600. 那么用数组bit表示 bit(1600, 7900, 4).
下面代码解释:输入n,输出n!.
#define _CRT_SECURE_NO_WARNINGS#include <cstdio>#include <cstring>const int N = 5000, BASE = 10000;int bit[N]; //1w进制 int main(){int n;while (~scanf("%d", &n)) {memset(bit, 0, sizeof bit);int i, len = 1; //len表示有多少位 bit[0] = 1;//0, 1, 3,..低位到高位for (int b = 2; b <= n; ++b) {int c = 0; //进位c for (i = 0; i < len; ++i) { //起初这里用b[i] == 0作为循环终止条件,当n=20是,n!低4位为0,循环终止 :), 哈哈bit[i] = bit[i] * b + c; c = 0;if (bit[i] >= BASE) {c = bit[i] / BASE;bit[i] %= BASE;}}if(c) bit[len++] += c;}i = len - 1;printf("%d", bit[i--]);for (; i >= 0; --i) {printf("%04d", bit[i]);}puts("");}return 0;}
阅读全文
0 0
- 大数阶乘--------------------------南阳理工学院题目28
- nyist ( 南阳理工学院 ) 28 大数阶乘
- 南阳理工题目28大数阶乘
- 南阳oj 大数阶乘 题目28
- 南阳28 大数阶乘
- 南阳OJ 28:大数阶乘
- 南阳oj 28 大数阶乘
- 题目28:大数阶乘
- 南阳理工ACM 28大数阶乘
- 南阳理工:大数阶乘
- 南阳ACM28-大数阶乘
- 南阳理工大数阶乘
- nyoj 题目28 大数阶乘
- 兄弟郊游问题,题目来源南阳理工学院
- 南阳理工POJ 大数阶乘
- 南阳理工学院
- 南阳题目91-阶乘之和
- 南阳理工学院题目总结1-括号配对问题
- 机器学习解决问题的步骤
- 以AT24C02为例的IIC通信协议
- 360技术能力测评
- BZOJ 1623: [Usaco2008 Open]Cow Cars 奶牛飞车
- 一些重要的文档收藏起来
- 大数阶乘--------------------------南阳理工学院题目28
- Sparse Graph HDU
- PHP:客户端禁用cookie之后如何使用session
- Number Game
- 2743:字符串判等
- 原生js节点操作
- Hibernate实体关系映射—Annotation
- ceph固化实验(一)
- 理解Angular中的$apply()以及$digest()