Wizard of Orz CodeForces - 1467A

题意:

有个长度为n初始状态下各元素均为0的数组,没过一秒数组中所有元素都会+1,如果是9则会变成0,即0-9不断循环。现在你能够在开始后的任意时间点选取任意一个位置,改位置上的数字立刻停止增加,与其距离为x的位置上的元素则在x秒后暂停(这x秒内还是数字会继续增加)。给定你长度n,求出由n个元素构成的最大数字(包含前导零)

题解:

规律题,通过找规律不难发现前三位是989,从第四位开始就是0~9的循环

代码:

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline int read(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);
   return s*w;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        if(n==1)cout<<9<<endl;
        else if(n==2)cout<<98<<endl;
        else 
        {
            cout<<9<<8<<9; 
            for(int i=0;i<n-3;i++)
            {
                cout<<i%10;
            }
            cout<<endl;
        }
    }
    return 0;
}
/*
888
989

8888
9890

88888
98901

8888888
98901
*/