Long Beautiful Integer

C - 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;
}
posted @ 2020-02-13 21:19  caoanda  阅读(126)  评论(0编辑  收藏  举报