Codeup100000593问题 B: N的阶乘

    技术2025-03-06  36

    题目描述:

    输入一个正整数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; }
    Processed: 0.009, SQL: 9