还差一个点就ac了,难受!!!
查看原帖
还差一个点就ac了,难受!!!
488281
killer_queen4804楼主2022/1/21 18:37
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll inf=0x3f3f3f3f3f3f3f3f;
ll a,b;
ll sum=0,sum1=0;
char n[100005];
char s[100005];
char ny(int x){
        if(x>1){
        for(int i=0;i<=9;i++){
        //if(a==2){if(i%2==0) return (i+'0');}
        if(a==3){if((sum+i)%3==0) return (i+'0');}
        //if(a==4){int y=(n[x-1]-'0')*10+i;if(y%4==0) return (i+'0');}
        //if(a==5){if(i==0||i==5) return (i+'0');}
        if(a==6){if((i%2==0)&&((sum+i)%3==0)) return (i+'0');}
        if(a==7){if((sum1*3+i)%7==0) return (i+'0');}
        //if(a==8){int y=(n[x-2]-'0')*100+(n[x-1]-'0')*10+i;if(y%8==0) return (i+'0');}
        if(a==9){if((sum+i)%9==0) return (i+'0');}
        //if(a==10){if(i==0) return (i+'0');}
    }
    }
    else{
        for(int i=1;i<=9;i++){
        if(a==2){if(i%2==0) return (i+'0');}
        if(a==3){if((sum+i)%3==0) return (i+'0');}
        if(a==4){int y=(n[x-1]-'0')*10+i;if(y%4==0) return (i+'0');}
        if(a==5){if(i==5) return (i+'0');}
        if(a==6){if((i%2==0)&&((sum+i)%3==0)) return (i+'0');}
        if(a==7){if((sum1*3+i)%7==0) return (i+'0');}
        if(a==8){int y=(n[x-2]-'0')*100+(n[x-1]-'0')*10+i;if(y%8==0) return (i+'0');}
        if(a==9){if((sum+i)%9==0) return (i+'0');}
    }
    }
    return '#';
}
char nn(int x){
    if(x>1){
        for(int i=0;i<=9;i++){
        if(a==2){if(i%2!=0) return (i+'0');}
        if(a==3){if((sum+i)%3!=0) return (i+'0');}
        if(a==4){int y=(n[x-1]-'0')*10+i;if(y%4!=0) return (i+'0');}
        if(a==5){if(i!=0&&i!=5) return (i+'0');}
        if(a==6){if((i%2!=0)||((sum+i)%3!=0)) return (i+'0');}
        if(a==7){if((sum1*3+i)%7!=0) return (i+'0');}
        if(a==8){int y=(n[x-2]-'0')*100+(n[x-1]-'0')*10+i;if(y%8!=0) return (i+'0');}
        if(a==9){if((sum+i)%9!=0) return (i+'0');}
        if(a==10){if(i!=0) return (i+'0');}
    }
    }
    else{
        for(int i=1;i<=9;i++){
        if(a==2){if(i%2!=0) return (i+'0');}
        if(a==3){if((sum+i)%3!=0) return (i+'0');}
        if(a==4){int y=(n[x-1]-'0')*10+i;if(y%4!=0) return (i+'0');}
        if(a==5){if(i!=5) return (i+'0');}
        if(a==6){if((i%2!=0)||((sum+i)%3!=0)) return (i+'0');}
        if(a==7){if((sum1*3+i)%7!=0) return (i+'0');}
        if(a==8){int y=(n[x-2]-'0')*100+(n[x-1]-'0')*10+i;if(y%8!=0) return (i+'0');}
        if(a==9){if((sum+i)%9!=0) return (i+'0');}
        if(a==10){if(i!=0) return (i+'0');}
    }
    }
    return '#';
}
int main(){
    //freopen("in.txt","r",stdin);
    scanf("%lld%lld",&a,&b);
    scanf("%s",s+1);
    ll len=strlen(s+1);
    if(a==10&&s[1]=='1'){cout<<-1<<endl;return 0;}
    for(int i=1;i<=len;i++){
        if(s[i]=='1'){
            n[i]=ny(i);
        }
        if(s[i]=='0'){
            n[i]=nn(i);
        }
        sum+=(n[i]-'0');
        sum1=sum1*3+(n[i]-'0');
    }
    for(int i=1;i<=len;i++)cout<<n[i];
	return 0;
}

谁能告诉我p6380 Subtask #5 #16的测试数据啊

2022/1/21 18:37
加载中...