題目鏈接:http://codeup.cn/problem.php?cid=100000593&pid=1
題目描述
輸入一個正整數N,輸出N的階乘。
輸入
正整數N(0<=N<=1000)
輸出
輸入可能包括多組數據,對於每一組輸入數據,輸出N的階乘
樣例輸入
0
4
7
樣例輸出
1
24
5040
代碼
#include<cstdio>
#include<cstring>
struct bign {
int d[100010]; //數組要足夠大
int len;
bign () {
memset(d, 0, sizeof(d));
len = 0;
}
};
bign charge(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;
}
void print(bign a) {
for(int i = a.len - 1; i >= 0; i--)
printf("%d", a.d[i]);
printf("\n");
}
bign comput(bign a, int b) {
bign c;
int carry = 0;
for(int i = 0; i < a.len; i++){
int 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;
}
int main () {
int n;
while(scanf("%d", &n) != EOF){
bign ans;
ans.d[0] = 1; //從1開始
ans.len = 1;
for(int i = 2; i <= n; i++)
ans = comput(ans, i);
print(ans);
}
return 0;
}