nyoj 28 大数阶乘
发布时间:2020-12-14 03:36:20 所属栏目:大数据 来源:网络整理
导读:题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=28 用运算符重载,以及滚动数组来解的。 #include iostream#include cstdio#include cstringusing namespace std;const int MAXN = 5010;struct BigInt{ int l; int s[MAXN2];}c[2];BigInt oper
题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=28 用运算符重载,以及滚动数组来解的。 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MAXN = 5010; struct BigInt { int l; int s[MAXN<<2]; }c[2]; BigInt operator *(BigInt a,int b) { int i; for(i = a.l; i < (MAXN<<2); ++i) a.s[i] = 0; for(i = 0; i < a.l; ++i) a.s[i] *= b; for(i = 0; i < a.l; ++i) { a.s[i+1] += a.s[i]/10; a.s[i] %= 10; } while(a.s[a.l] != 0) { a.s[a.l+1] = a.s[a.l]/10; a.s[a.l] %= 10; a.l++; } return a; } void Print(BigInt a) { int i; for(i = a.l-1; i >= 0; --i) printf("%d",a.s[i]); printf("n"); } int main() { int m; while(~scanf("%d",&m)) { int i; c[0].l = 1,c[0].s[0] = 1; for(i = 1; i <= m; ++i) c[i%2] = c[(i+1)%2] * i; Print(c[m%2]); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |