高精度整数——2. N的阶乘

2020-07-05  本文已影响0人  辘轳鹿鹿

清华大学研究生复试n的阶乘问题

题目描述

输入一个整数n,输出n的阶乘(每组测试用例可能包含多组数据,请注意处理)

输入描述:

一个整数n(1<=n<=20)

输出描述:

n的阶乘

示例1

输入

3

输出

6</pre>

解题心得:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>


typedef struct bigInteger{
    int digit[1001];
    int size;
}bigInteger;

int main(){

    int a;
    while(scanf("%d",&a)!=EOF){
        bigInteger A;
        int i,j;
        A.size=1;
        A.digit[0]=1;

        for(i=1;i<1001;i++){
            A.digit[i]=0;
        }



        int carry=0,tmp;

        for(j=1;j<=a;j++){
            carry=0;
            for(i=0;i<A.size;i++){
                tmp=A.digit[i]*j+carry;
                carry=tmp/10000;
                A.digit[i]=tmp%10000;
            }
            if(carry>0){
             A.digit[A.size++]=carry;
        }
        }


        for(i=A.size-1;i>=0;i--){
            if(i==A.size-1){
                printf("%d",A.digit[i]);

            }
            else{
                printf("%04d",A.digit[i]);
            }
        }
        printf("\n");


    }

    return 0;

}


方若棋盘,圆若棋子,动若棋生,静若棋死
方若行义,圆若用智,动若聘才,静若得意

上一篇 下一篇

猜你喜欢

热点阅读