美文网首页程序员
FCTRL2 - Small factorials

FCTRL2 - Small factorials

作者: waaagh | 来源:发表于2020-04-30 09:27 被阅读0次

    其实spoj的题还是挺有意思的。
    题目大意:很简单,求n!,你最大100
    思路:100!得有一百多位,LL也不行,只能用字符串模拟乘法。
    实现:注意进位可能有多次
    代码:

    //FCTRL2 - Small factorials
    #include<iostream>
    using namespace std;
    #define MAXN    1000
    #define LL  long long
    
    int n, t;
    
    int main() {
        scanf("%d", &t);
        while(t--) {
           scanf("%d", &n);
           if(n==0) {
               cout << 1 << endl;
           }else {
                char num[MAXN];
                int len = 1;
                num[0] = '1'; num[len] = 0;
                for(int i=2; i<=n; i++) {
                    int carry = 0;
                    int j = 0;
                    while(j<len) {
                        int mul = (num[j]-'0')*i + carry;
                        num[j] = mul%10 + '0';
                        carry = mul/10;
                        j++;
                    }
    //              printf("carry = %d\n", carry);
                    while(carry){
                        num[len++] = carry%10+'0';
                        num[len] = 0;
                        carry /=10;
                    }
    //              printf("i=%d, num=%s\n", i,num);
                }
    
                for(int i=len-1; i>=0; i--) {
                    putchar(num[i]);
                }
                putchar('\n');
           }
        }
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:FCTRL2 - Small factorials

        本文链接:https://www.haomeiwen.com/subject/nwwawhtx.html