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的蒟蒻 谢谢( ੭ ˙ᗜ˙ )੭