蒟蒻求助大佬!
查看原帖
蒟蒻求助大佬!
359430
江户川コナン楼主2021/7/21 22:22

求助! 爆零了……

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=10005;
int ans[maxn],aans[maxn],bans[maxn],n,a;
bool big[maxn];
string gj(string a,string b){
    memset(ans,0,sizeof(ans));
    memset(aans,0,sizeof(aans));
    memset(bans,0,sizeof(bans));
    memset(big,false,sizeof big);
    int lena=a.size(),lenb=b.size();
    for(int i=0;i<lena;i++){
        aans[i]=a[lena-i-1]-'0';
    }                   
    for(int i=0;i<lenb;i++){
        bans[i]=b[lenb-i-1]-'0';
    }
    /*for(int i=0;i<lena;i++){
        cout<<aans[i]<<" ";
    }*/
    //cout<<endl;
    /*for(int i=0;i<lenb;i++){
        cout<<bans[i]<<" ";
    }*/
    //cout<<endl;
    //cout<<"cpp"<<endl;
    for(int i=0;i<lena;i++){
        for(int j=0;j<lenb;j++){
            ans[i+j]+=aans[i]*bans[j];
            big[i+j]=true;
        }
    }
    //cout<<"cpp"<<endl;
    //cout<<ans[0]<<endl;
    /*for(int i=0;big[i]!=false;i++){
        cout<<ans[i]<<" ";
    }*/
    //cout<<"cpp"<<endl;
    for(int i=0;i<lena+lenb;i++){
        ans[i+1]+=ans[i]/10;
        if(ans[i]/10!=0){
            big[i+1]=true;
        }
        ans[i]%=10; 
    }
    int lenab=0;
    while(big[lenab]){
        lenab++;
    }
    lenab--;
    string str="";
    for(int i=lenab;i>=0;i--){
        str+=(ans[i]+'0');
    }
    return str;
}
void read(){
    int sum=0;
    cin>>n>>a;
    string je="1";
    string j="";
    for(int i=1;i<=n;i++){
        j+=(i+'0');
        je=gj(j,je);
        j="";
    }
    for(int i=0;i<je.size();i++){
        if((je[i]-'0')==a){
            sum++;
        }
    }
    cout<<sum<<endl;
}
int main(){
    int T;
    cin>>T;
    while(T--){
        read();
    }
    return 0;
}

恳求大佬/神犇指点迷津

2021/7/21 22:22
加载中...