原題連結:http://codeforces.com/problemset/problem/770/A
學校acm改編如下 (資料還是一樣)
題目:
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。 注意在測試中所有适當的密碼都不是連續的兩個相同的符号是正确的。
題意分析:
輸出的密碼隻要是任何一種滿足題意的既可以了 不一定要是樣例的那種
比如說樣例
Input
4 3
Output
java
java也可以 輸出成 abca
寫代碼的時候從a開始輸出,用強制轉換
(char)(i+'a')
運作結果如圖:
輸入 7 3
輸出 abcabca
輸出字母 | a | b | c | a | b | c | a |
i的值 | 1 | 2 | 3 | 4 | 5 | 6 | |
餘數 i%k | 3%3 =0 | 4%3 =1 | 5%3 =2 | 6%3 =0 |
代碼如下:
#include<stdio.h>
int main()
{
int n,k;
int i;
scanf("%d%d", &n,&k);
for (i = 0; i < n; i++)
{
if (i > k-1)//如果條件成立,說明已經達到了k個不同的數字
{
/*i%k的意思是又從a開始取,i是不斷地增加,k是不變的,i%k就可以依此變化 = 0,1,2....*/
printf("%c",(char)(i%k+'a'));
}
else
{
printf("%c",(char)(i+'a'));//i<k a+0輸出a a+1輸出b...依此類推
}
}
}