题意:给一个
~就是正解的思路不知道为什么错第
首先不可能会得到比
先把数字
这个构造是最小的,因为要比
重点是要注意进位的情况,即前
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define INF 9223372036854775807LL
using namespace std;
const int maxn=2e5+1010;
int n,k;
char s[maxn],t[maxn];
int main()
{
scanf("%d%d",&n,&k);
scanf("%s",s+1);
for(int i=1;i<=k;i++)
{
t[i]=s[i];
for(int j=i;j<=n;j+=k)
t[j]=t[i];
}
bool flag=1;
for(int i=1;i<=n;i++)
{
if(t[i]<s[i])
flag=0;
else if(t[i]>s[i])
break;
}
if(flag)
{
printf("%d\n",n);
puts(t+1);
return 0;
}
for(int i=k;i>=1;i--)
{
t[i]++;
if(t[i]<='9')
{
for(int j=i;j<=n;j+=k)
t[j]=t[i];
break;
}
else
{
t[i]='0';
for(int j=i;j<=n;j+=k)
t[j]=t[i];
}
}
printf("%d\n",n);
puts(t+1);
return 0;
}