Codeforces Round #695 (Div. 2) A. Wizard of Orz

题目大意:
你可以选择一个数位为一个数(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;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值