求助,样例过了,全WA

P1591 阶乘数码

XZIT20200507103 @ 2021-05-30 16:03:16

#include<stdio.h>
int multiply(int s[],int i,int &len){
    for(int j=0;j<len;j++){
        s[j]*=i;
    }
    len+=2;
    for(int j=0;j<len;j++){
        s[j+1]+=s[j]/10;
        s[j]%=10;
    }
    while(!s[len-1]) len--;
}
int main(){
    int num;
    scanf("%d",&num); 
    while(num){
        int s[100000]{};
        s[0]=1;
        int n,len=1;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            multiply(s,i,len);
        }
        int ser;
        long long int a=0;
        scanf("%d",&ser);
        for(int i=len-1;i>=0;i--){
            if(s[i]==ser) a++;
        }
        printf("%ld\n",a);
        num--;
    }
} 

by Echidna @ 2021-05-30 16:23:05

当你把一个数乘1000的时候,它是会进3位而不是两位……

把你的 len+=2 改成 len+=3 ,顺便把数组稍微开大一点就过了。


by XZIT20200507103 @ 2021-05-30 16:29:36

@某学oi的蒟蒻 谢谢( ੭ ˙ᗜ˙ )੭


|