题目描述:
TANG最近想换一个新密码,然而他忙着刷题(太强了),没空去想这个新密码(orz)。现在他需要你的帮助。
TANG决定新密码应该满足以下条件:
密码的长度必须等于n,
密码只能由小写的拉丁字母组成,
密码中不同符号的数量必须等于k,
密码中的任何两个连续的符号必须是不同的。
你的任务是帮助忙碌的TANG,发明一个新的密码,满足所有给定的条件。
(虽然我觉得他大概不会真的用这个)
Input
第一行输入两个数n和k,2<=n<=100,2<=k<=n,且k不超过26,因此这个密码一定存在
output
输出任意一个满足条件的密码
Example
Input
4 3
Output
java
Input
6 6
Output
python
Input
5 2
Output
phphp
Note
在第一个测试中,有一个合适的新密码–java,因为它的长度等于4和3个不同的小写字母a,j和v。 在第二个测试中,有一个合适的新密码 - python,因为它的长度等于6,它由6个不同的小写字母组成。 在第三个测试中,有一个适当的新密码 - phphp,因为它的长度等于5和2使用不同的小写字母p和h。 注意在测试中所有适当的密码都不是连续的两个相同的符号是正确的。
分析:
本题一个很简单的模拟。
首先用一个字符数组来保存密码。
长度为n,那么我们就循环n次,每次给数组赋一个值。
它要求必须有且只有K个不同的字符。
那么, 我们可以就只用a到a+k,这之间的字符来构建密码。
很明显了,我们只要依次循环a到a+k,之间的字符,从而可构建此密码。
代码:
#include"stdio.h"
#include"string.h"
int main()
{
int n,k;
char word[101];
int frequency[26];
int len,i,j;
scanf("%d%d",&n,&k);
for(i=0,j=0;i<n;i++,j++)
{
if(j==k)//到了第k个字符,就从头在来
j=0;
word[i]='a'+j;
}
word[i]='\0';//注意,字符串是有结束标志的。
printf("%s\n",word);
}