CF1493E
Solution
诈骗题。
首先发现如果
则接下来考虑
考虑一个结论:当
那么我们考虑形如
进一步的,答案只有可能是三种:
显然当
当
容易发现的是,需要满足
复杂度
Code
#include<bits/stdc++.h>
//#define int long long
#define ll long long
#define ull unsigned long long
#define ld long double
#define PII pair<int,int>
#define INF 0x3f3f3f3f
#define INFLL 0x3f3f3f3f3f3f3f3f
#define chkmax(a,b) a=max(a,b)
#define chkmin(a,b) a=min(a,b)
#define rep(k,l,r) for(int k=l;k<=r;++k)
#define per(k,r,l) for(int k=r;k>=l;--k)
#define cl(f,x) memset(f,x,sizeof(f))
using namespace std;
const int N=1e6+5;
char l[N],r[N];
signed main() {
int n;
scanf("%d",&n);
scanf("%s%s",l+1,r+1);
if(l[1]!=r[1]) {
rep(i,1,n)
putchar('1');
return 0;
}
if(r[n]&1)
return 0&printf("%s\n",r+1);
++l[n-1];
per(i,n-1,0) {
if(l[i]>49)
l[i]-=2,++l[i-1];
}
bool flag=true;
rep(i,0,n) {
if(l[i]!=r[i]) {
flag=l[i]<r[i];
break;
}
}
r[n]+=flag;
printf("%s\n",r+1);
return 0;
}