045. Richness of words
Time limit: 0.5 second
Memory limit: 64 MB
Memory limit: 64 MB
For each integer
i from 1 to
n, you must print a string
s
i of length
n consisting of lowercase Latin letters.The string
s
i must contain exactly
i distinct palindrome substrings.Two substrings are considered distinct if they are different as strings.
Input
The input contains one integer
n (1 ≤
n ≤ 2000).
Output
You must print
n lines. If for some
i, the answer exists, print it in the form “
i :
s
i” where
s
i is one of possible strings.Otherwise, print “
i : NO”.
Sample
input | output |
---|---|
4 | 1 : NO 2 : NO 3 : abca 4 : bbca |
分析:四个字符abcd随便构造,n <= 2 单独处理,否则abc循环放,这样可以构造出长度为3的,长度每加1将一位换成d即可。
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<set>
#include<map>
#include<vector>
#include<cstring>
#include<stack>
#include<cmath>
#include<queue>
#define INF 0x3f3f3f3f
#define eps 1e-9
#define MAXN 10005
using namespace std;
int n;
char s[MAXN];
int main()
{
scanf("%d",&n);
if(n == 1)
{
cout<<"1 : a"<<endl;
return 0;
}
if(n == 2)
{
cout<<"1 : NO"<<endl;
cout<<"2 : aa"<<endl;
return 0;
}
cout<<"1 : NO"<<endl;
cout<<"2 : NO"<<endl;
for(int i = 0;i < n;i++) s[i] = 'a' + i % 3;
s[n] = '\0';
cout<<"3 : "<<s<<endl;
for(int i = 4;i <= n;i++)
{
s[i-4] = 'd';
cout<<i<<" : "<<s<<endl;
}
}