Long Beautiful Integer
对于这种思维题,其得到的规律不重要,重要的是得到规律的过程,在写题的时候,应该在纸上模拟得到样例的过程,这样有利于看出规律,因为相比于在脑海里想规律,在纸上表现出来的规律更加直观。
// Created by CAD on 2020/2/13.
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=2e5+5;
int a[maxn];
int main()
{
int n,k;cin>>n>>k;
string s;cin>>s;
int slen=s.length();
for(int i=0;i<slen;++i)
a[i+1]=s[i]-'0';
int small=inf,big=inf;
for(int i=k+1;i<=n;++i)
if(a[i]<a[(i-1)%k+1]) small=min(small, i);
else if(a[i]>a[(i-1)%k+1]) big=min(big,i);
if(big<small){
int op=k;
a[op]++;
while(a[op]==10&&op>=2) a[op]=0,op--,a[op]++;
}
cout<<n<<endl;
for(int i=1;i<=n;++i)
cout<<a[(i-1)%k+1];
cout<<'\n';
return 0;
}
CAD加油!欢迎跟我一起讨论学习算法,QQ:1401650042