您的位置:首页 > 其它

HDOJ-----1042阶乘

2016-07-18 20:45 274 查看
[align=left]Problem Description[/align]
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!

 

[align=left]Input[/align]
One N in one line, process to the end of file.

 

[align=left]Output[/align]
For each N, output N! in one line.

 

[align=left]Sample Input[/align]

1
2
3

 

[align=left]Sample Output[/align]

1
2
6

输入n,求n的n次方

#include<cstdio>
int a[10010];
int main(){
int n,i,j,c,t;
while(~scanf("%d", &n)){
a[0] = 1;
t = 0;
for(i = 1; i <= n; ++i){//每个数组单位存五位数字,即字节byte与位bit的关系,一个a[i]储存*****五位数字
c = 0;
for(j = 0; j <= t; ++j){
a[j] = a[j]*i + c;//c是进位的值,t表示第几个单位,即第几个储存五位数字的单位
c = a[j] / 100000;//与100000运算,满五向前进位,100000只是个基数,换成1000000即一个单位储存六位数字
a[j] %= 100000;
}
if(c != 0){
t++;
a[t] = c;
}
}
printf("%d", a[t]);//最高位不一定满五位,不能用%05d输出,单独输出
for( i = t - 1; i >= 0; i--){
printf("%05d",a[i]);
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: