題名:
長さがnの配列があり、初期状態の各要素は0です。1秒後、配列内のすべての要素は+1になり、9の場合は0、つまり0〜9になります。ループし続けます。これで、開始後の任意の時点で任意の位置を選択でき、変更された位置の数はすぐに増加を停止し、そこからxの距離にある要素はx秒後に一時停止します(数は内で増加し続けます) x秒)。長さnが与えられた場合、n個の要素(先行ゼロを含む)で構成される最大数を見つけます。
回答:
規則性の質問の場合、規則性を探して最初の3桁が989であることを見つけるのは難しくありません。また、4桁目から始まるのは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
*/