初十三 @ 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大