题目大意:
你可以选择一个数位为一个数(0-9),然后与其相邻的位置为其后一个数(9后是0,0后是1),以此类推
输出长度为n位数的数的最大值。
输入格式
输入的第一行包含单个整数t(1≤t≤100)-测试用例的数量。每个测试用例由一行组成,其中包含单个整数n(1≤n≤2⋅105)。可以保证所有测试用例上的n之和不超过2⋅105。
输出格式
对于每个测试用例,请打印最大数
应该不知我一个人觉得这道题唯一的难点在题目理解吧QWQ,看了半天都看不懂。。
为使数最大,第一位肯定是9。
n=1时我们选择9放在第一位
n≥2时我们为使第一位是9,只能选择第二位为8
所以这个n位数最大应该为
98901234567890123456789…
AC代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
char a[]="0123456789";
char b[]="989";
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
for(int i=0;i<min(n,3);++i)
printf("%c",b[i]);
if(n>3){
n-=3;
for(int i=0;i<n;++i)
printf("%c",a[i%10]);
}
printf("\n");
}
return 0;
}