求大神帮忙,为何WA了

P1591 阶乘数码

Jason_Yvan @ 2016-10-05 21:53:23

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
struct number{
    int x[1000];
    int len;
    number(int a=0){
        if(a==0){
            memset(x,0,sizeof(x));
            len=0;
        }
        if(a==1){
            x[0]=1;
            len=1;
        }
    }
    number operator * (number a){
        number res;
        res.len=len+a.len-1;
        for(int i=0;i<len;i++){
            for(int j=0;j<a.len;j++){
                res.x[i+j]+=x[i]*a.x[j];
                res.x[i+j+1]+=res.x[i+j]/10;
                res.x[i+j]%=10;
            }
        }
        while(res.x[res.len]){
            res.x[res.len+1]+=res.x[res.len]/10;
            res.x[res.len]%=10;
            ++res.len;
        }
        return res;
    }
    number operator * (int b){ 
        number res;
        res.len=len;
        for(int i=0;i<res.len;i++){
            res.x[i]+=x[i]*b;
            res.x[i+1]+=res.x[i]/10;
            res.x[i]%=10;
        }
        while(res.x[res.len]){
            res.x[res.len+1]+=res.x[res.len]/10;
            res.x[res.len]%=10;
            ++res.len;
        }
        return res;
    }
    number operator +(number a){
        number res;
        res.len=max(len,a.len);
        for(int i=0;i<res.len;i++){
            res.x[i]+=a.x[i]+x[i];
            res.x[i+1]+=res.x[i]/10;
            res.x[i]%=10;
        }
        while(res.x[res.len]){
            res.x[res.len+1]+=res.x[res.len]/10;
            res.x[res.len]%=10;
            ++res.len;
        }
        return res;
    }
};
number get(int n){
    number ans=1;
    for(int i=2;i<=n;i++)
        ans=ans*i;
    return ans;
}
int main(){
    int i,j,k,m,n,a;
    int T;
    scanf("%d",&T);
    while(T--){
        number m;
        int ans1=0;
        scanf("%d%d",&n,&a);
        m=get(n);
        int k=m.len;
        for(i=k-1;i>=0;i--)
            if(m.x[i]==a)ans1++;
        printf("%d\n",ans1);
    }
    return 0;
}

by Jason_Yvan @ 2016-10-06 20:09:41

数组开小了


|