Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34844 武云帆 【S】T1 C++ 运行超时 54 1997 MS 1656 KB 1706 2024-11-19 13:33:22

Tests(6/11):


#include<bits/stdc++.h> using namespace std; long long k; string n; int a[100010],b[100010],c[100010],d[1010],len,cnt,id; int r,maxn; bool check(int z){ int p=maxn-z-1; int kk=0; int t=0; memset(c,0,sizeof c); while(p!=0){ int q=p%10; for(int i=1;i<=len;i++){ c[i+t]+=d[i]*q; c[i+1+t]+=c[i+t]/10; c[i+t]%=10; } t++; p/=10; } int w=0; for(int i=r;i>=1;i--){ if(c[i]!=0){ w=i; break; } } for(int i=1;(i<=r)||(i<=t+len);i++){ b[i]+=c[i]; b[i+1]+=b[i]/10; b[i]%=10; } for(int i=max(r,len+t)+1;i>0;i--){ if(a[i]>b[i]) return true; if(b[i]>a[i]) return false; } return true; } int main(){ cin>>n>>k; r=n.size(),maxn=1; n=" "+n; for(int i=2;i<=r;i++){ if(n[maxn]-'0'<n[i]-'0') maxn=i; } while(k!=0){ d[++len]=k%10; k/=10; } int z=0; while(1){ cnt=r; id=r; for(int i=1;i<=z;i++){ a[cnt--]=n[i]-'0'; b[id--]=n[i]-'0'; } a[cnt--]=n[maxn]-'0'; for(int i=z+1;i<=r;i++){ b[id--]=n[i]-'0'; if(i!=maxn){ a[cnt--]=n[i]-'0'; } } if(check(z)){ for(int i=1;i<=r;i++) n[i]=a[r-i+1]+'0'; } else break; z+=1; if(z>=r) break; maxn=z+1; for(int i=z+2;i<=r;i++){ if(n[maxn]-'0'<n[i]-'0') maxn=i; } } for(int i=1;i<=r;i++) cout<<n[i]; cout<<endl; }


测评信息: