QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#666092#8932. Bingolytqwq#WA 0ms11820kbC++143.9kb2024-10-22 16:34:282024-10-22 16:34:38

Judging History

你现在查看的是最新测评结果

  • [2024-10-22 16:34:38]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:11820kb
  • [2024-10-22 16:34:28]
  • 提交

answer

#include<stdio.h>
#include<string.h>
int minn(int x,int y){return x<y?x:y;}
int maxx(int x,int y){return x>y?x:y;}
#define N 1000010
#define ll long long
char ch[N];
long long m;
int a[N],lena;
int b[N],lenb;
int d[N],lend;
int c[N],lenc;
int e[N],lene;
int f[N],lenf;
int main(){
   // freopen("2.in","r",stdin);
    int t;scanf("%d",&t);
    while(t--){
        scanf("%s%lld",ch+1,&m);
        ll p=m;
        lend=0;
        while(p){
            d[++lend]=p%10;
            p/=10;
        }
        lena=strlen(ch+1);
        for(int i=1;i<=lena;i++)a[i]=ch[lena-i+1]-'0';
        a[lena+1]=0;
        if(lena<=18){
            p=0;
            for(int i=lena;i>=1;i--)p=p*10+a[i];
            if(p<m){
              //  printf("!%lld %lld\n",p,m);
                printf("%lld\n",m);
                continue;
            }
        }
        long long yu=0;
        for(int i=lena;i>0;i--){
            yu=yu*10+a[i];
            yu%=m;
        }
        lenb=lena;
        for(int i=1;i<=lenb;i++){
            b[i]=a[i];
        }
       // printf("!%lld\n",yu);
        int jw=(m-yu);
        int ti=1;
        while(a[ti]==9)ti++;
        ti++;
        for(int i=ti;i+lend-1<=lenb;i++){
            int flag=1;
            for(int j=lend;j>=1;j--){
                if(d[j]!=a[i-1+j]){
                    flag=0;
                    break;
                }
            }
            if(flag){
                jw=1;
                break;
            }
        }
        
        for(int i=1;i<=lenb;i++){
            b[i]+=jw;
            jw=b[i]/10;
            b[i]%=10;
        }
        while(jw){
            ++lenb;
            b[lenb]=jw;
            jw=b[lenb]/10;
            b[lenb]%=10;
        }
        
        for(int i=lena+1;i<=lenb;i++){
            a[i]=0;
        }
        pwp:
       // for(int i=lenb;i>=1;i--)putchar(b[i]+'0');
      //  puts("");
        int fid=0;
        for(int i=lenb;i>=1;i--){
            if(a[i]<b[i]){
                fid=i;
                break;
            }
        }
       // printf("P%d\n",fid);
        for(int i=1;i<=lenb;i++)c[i]=a[i];
        int flagc=0;
       // for(int i=lenb;i>=1;i--)putchar(b[i]+'0');
       // puts("");
        int maxl=lenb;
        for(int i=1;i+lend-1<=lenb&&i<=maxl;i++){
            int flag=1;
            for(int j=lend;j>0;j--){
                if(j==0){
                   flag=0;break;
                }
                if(d[j]>a[i-1+j])break;
                if(d[j]<a[i-1+j]){
                    flag=0;
                    break;
                }
            }
            if(flag&&i+lend-1>=fid){
                for(int j=lend;j>=0;j--){
                    if(j==0){
                   //     printf("=%d\n",i);
                        int cp=1;
                        for(int h=1;h<i;h++)if(b[h]!=0){
                            cp=0;break;
                        }
                        if(cp){
                            flag=0;
                        }
                        break;
                    }
                    if(d[j]>b[i-1+j]){
                        flag=0;
                        break;
                    }
                    if(d[j]<b[i-1+j])break;
                }
            }
            if(flag){
              //  printf("gai%d\n",i);
                flagc=1;
                for(int j=1;j<=lena;j++)b[j]=a[j];
                lenb=lena;
                for(int j=lend;j>=1;j--)
                    b[i-1+j]=d[j];
                for(int j=0;j<i;j++)b[j]=0;
                //break;
                goto pwp;            
            }
        }
       // puts("ans");
       // if(flagc){
      //      for(int i=lena;i>=1;i--)putchar(a[i]+'0');
      //  }else{
        while(lenb>0&&b[lenb]==0)lenb--;
            for(int i=lenb;i>=1;i--)putchar(b[i]+'0');
       // }
       // puts("");
    }
    return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 11820kb

input:

6
7 3
12 3
9 10
249 51
1369 37
2 1

output:

91310
25113703

result:

wrong answer 1st lines differ - expected: '9', found: '91310'