这题有什么要注意的吗?为啥我样例对了,却全红

P1591 阶乘数码

初十三 @ 2020-08-10 16:09:34

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int m;
    int a[1002],b[1002],c[1002];
    cin >> m;
    while(m--)
    {
       bool x=false;
        long long int n,q,w,flag;
      memset(b,0,sizeof(b));
      memset(c,0,sizeof(c));
      b[1]=1;
      flag=0;
      cin >> n>>w;
      int j,h;
      for(int i=n;i>0;i--)
      {
        int k=i,l=0;
        memset(a,0,sizeof(a));
        for(int f=1;f<1002;f++)
        {
            a[f]=k%10;
            k/=10;
            l++;
            if(k==0)
            break;
        }
        for(int j=1;j<1002;j++)
        {
            for(int h=1;h<=l;h++)
            {
                c[j+h-1]+=b[j]*a[h];
                if(c[j+h-1]>=10)
                {
                    q=c[j+h-1]/10;
                    c[j+h]+=q;
                    c[j+h-1]%=10;
                }
            }
        }
        for(int f=1;f<1002;f++)
        b[f]=c[f];
        memset(c,0,sizeof(c));
      }
      for(int i=1001;i>0;i--)
      {
        if(b[i]==0&&x==false)
        continue;
        else
        {
            x=true;
            if(b[i]==w)
            flag++; 
        }
      }
      cout << flag << endl;
    }
    return 0;
 } 

大佬们帮忙看看,谢谢啦。


by BlackW @ 2020-08-10 22:25:28

a,b,c数组开得太小了,起码要开个3000大


|