题目描述:
输入一个正整数N,输出N的阶乘。
输入:
正整数N(0<=N<=1000)
输出:
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
样例输入:
0
4
7
样例输出:
1
24
5040
实现代码:
#include <cstdio>
#include <cstring>
struct bign
{
int d
[2600];
int len
;
bign(){
memset(d
,0,sizeof(d
));
len
=0;
}
};
bign
change(char str
[]){
bign a
;
a
.len
=strlen(str
);
for(int i
=0;i
<a
.len
;i
++){
a
.d
[i
]=str
[a
.len
-1-i
]-'0';
}
return a
;
}
bign
multi(bign a
,int b
){
bign c
;
int carry
=0;
int temp
;
for(int i
=0;i
<a
.len
;i
++){
temp
=a
.d
[i
]*b
+carry
;
c
.d
[c
.len
++]=temp
%10;
carry
=temp
/10;
}
while(carry
!=0){
c
.d
[c
.len
++]=carry
%10;
carry
/=10;
}
return c
;
}
void print(bign a
){
for(int i
=a
.len
-1;i
>=0;i
--){
printf("%d",a
.d
[i
]);
}
}
int main(){
char str1
[1010];
while(scanf("%s",str1
)!=EOF){
bign a
=change(str1
);
int b
=0;
for(int i
=0;i
<strlen(str1
);i
++){
b
=b
*10+(str1
[i
]-'0');
}
for(int i
=b
-1;i
>=1;i
--){
a
=multi(a
,i
);
}
if(!b
){
printf("1");
}else{
print(a
);
}
printf("\n");
}
return 0;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-55352.html