列表

详情


NC227319. 又一构造子序列

描述


给定整数,请你输出一个字符串,字符串长度不能超过,使得该字符串当中恰好有子序列。

备注:一个序列的子序列是指,在原序列中删除任意数量、任意位置的一些字符(也可以不删除)所能够得到的新序列。

输入描述

输入的第一行是一个整数,表示样例组数。

接下来的行,每行一个整数,含义如题面所述。

输出描述

对于每一组样例,若答案不存在,输出

若答案存在:

请先输出一行一个整数,表示你打算输入的字符串的长度。

接下来的一行输出你所要输入的字符串,字符串长度为,字符串应全部由小写字母所组成。

本题的答案可能不唯一,输出任意一个即可。

示例1

输入:

4
1
2
3
4

输出:

5
yycnb
4
yycc
5
yyccc
6
yycccc

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 22ms, 内存消耗: 1196K, 提交时间: 2021-09-19 18:28:57

#include<bits/stdc++.h>
using namespace std;
//yyy....c存在规律 
int main()
{
	int t;
	cin>>t;
	while(t--){
	int n,i;
	cin>>n;
	for(i=1;;i++) 
	if(i*(i-1)>2*n) break;
	i--;
	int j=n-i*(i-1)/2;
	cout<<i+1+j<<endl;
	cout<<"yy";
	for(int p=1;p<=j;p++) cout<<"c";
	for(int p=1;p<=i-2;p++) cout<<"y";
	cout<<"c"<<endl;
	}
	return 0;
 } 

上一题