1172:求10000以内n的阶乘
时间限制: 1000 ms 内存限制: 65536 KB 提交数: 15613 通过数: 3915 【题目描述】 求10000以内n的阶乘。
【输入】 只有一行输入,整数n(0≤n≤10000)。
【输出】 一行,即n!的值。
【输入样例】 4 【输出样例】 24 【来源】 No
提交 统计信息 提交记录
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> using namespace std; int a[50000]={1},len=1; // len 用于存放阶乘结果的位数,初始值为1 int main() { int n; cin>>n; for(int i=1;i<=n;i++) // n的阶乘需运算n次 { for(int j=0;j<len;j++) // 从len位之前每一位乘i { a[j]*=i; } for(int j=0;j<len;j++) // 处理len位之前的进位问题 { if(a[j]>9) // 若本位满10 { a[j+1]+=a[j]/10; // 下一位要加上进位 a[j]%=10; // 取模后得到本位上的数 if(j==len-1) len++; // 最后一位也满10 ,位数要累加 } } } for(int i=len-1;i>=0;i--) // 倒序输出 { cout<<a[i]; } cout<<endl; return 0; }