求助大佬,前三个点wa了

P1591 阶乘数码

73Hz @ 2019-08-26 21:00:03

#include<stdio.h>
#include<string.h>
int s[3700],s_len=0;
void add(int x)
{
    for(int i=0;i<=s_len;i++)
        s[i]*=x;
    for(int i=0;i<=s_len;i++)
    {
        if(s[i]>=10)
        {
            s[i+1]+=s[i]/10;
            s[i]%=10;
            if(i==s_len)
                s_len++;
        }
    }
}
void find(int x)
{
    int total=0;
    for(int i=s_len;i>=0;i--)
        if(s[i]==x)
        total++;
    printf("%d\n",total);
}
int main(void)
{
    int k,n,num;
    scanf("%d",&k);
    for(int j=0;j<k;j++)
    {
        scanf("%d%d",&n,&num);
        memset(s,0,sizeof(s));
        s[0]=1;
        for(int i=2;i<=n;i++)//阶乘
            add(i);
        find(num);
        //printf("len=%d\n",s_len);
    }
    return 0;
}

by __y__ @ 2020-04-19 13:19:26

因为你把s_len设置成了全局变量,所以类似于先7的阶乘,后5的阶乘,对于你的程序5的阶乘长度还是4位


|