MnZn代码70pts离谱测评结果求调
查看原帖
MnZn代码70pts离谱测评结果求调
564427
SiXinchen楼主2023/8/7 21:58
#include<bits/stdc++.h>
using namespace std;

int main(){
    //freopen("xx.in","r",stdin);
    //freopen("xx.out","w",stdout);
    long long sum,n,t,x,top,b,toop;
    int a[100005],c[100005];
    scanf("%lld",&t);
    while(t--){
        memset(a,0,sizeof(a));
        sum=0,top=1;
        scanf("%lld %lld",&n,&x);
        a[1]=1;
        for(long long i=2;i<=n;i++){
            b=i;
            memset(c,0,sizeof(c));
            for(long long j=0;b;b/=10,j++){
                for(long long k=1;k<=top;k++){
                    c[k+j]+=a[k]*(b%10);
                    long long l=0;
                    while(c[k+j+l]>=10){
                        c[k+j+l+1]+=c[k+j+l]/10;
                        c[k+j+l]%=10;
                        l++;
                    }
                    toop=max(toop,k+j+l);
                }
            }
            for(long long j=1;j<=toop;j++){
                a[j]=c[j];
            }
            //cout<<top<<" ";
            top=toop;
            //cout<<top<<endl;
        }
        for(long long i=1;i<=top;i++){
            if(a[i]==x)sum++;
            //cout<<a[i]<<" 1 ";
        }
        printf("%lld\n",sum);
    }
    return 0;
}

前三个点WA了,没错,前三个点(悲

2023/8/7 21:58
加载中...