題目描述
jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的(使用相同個數的字母),英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的「數字」稱為
jam數字。在
jam數字中,每個字母互不相同,而且從左到右是嚴格遞增的。每次,
jam還指定使用字母的範圍,例如,從2到
10,表示只能使用
這些字母。如果再規定位數為
5,那麼,緊接在
jam數字「
bdfij
」之後的數字應該是「
bdghi
」。(如果我們用u、
v依次表示
jam數字「
bdfij」與「
bdghi」,則
u,且不存在
jam數字p,使
u)。你的任務是:對於從檔案讀入的乙個
jam數字,按順序輸出緊接在後面的5個
jam數字,如果後面沒有那麼多
jam數字,那麼有幾個就輸出幾個。
輸入輸入檔案
counting.in 有2
行,第1行為3
個正整數,用乙個空格隔開:
s t w
(其中s為所使用的最小的字母的序號,
t為所使用的最大的字母的序號。
w為數字的位數,這
3個數滿足:1≤
s≤26, 2≤w
≤t-s )第
2行為具有
w個小寫字母的字串,為乙個符合要求的
jam數字。
所給的資料都是正確的,不必驗證。 輸出
輸出檔案
counting.out
最多為5
行,為緊接在輸入的
jam數字後面的5個
jam數字,如果後面沒有那麼多
jam數字,那麼有幾個就輸出幾個。每行只輸出乙個
jam數字,是由
w個小寫字母組成的字串,不要有多餘的空格。
樣例輸入
2 10 5bdfij
樣例輸出
bdghibdghj
bdgij
bdhij
befgh
這道題只需要模擬就行了,從後往前判斷是否符合這個位置能達到的最大值,直到不成立就變化此位置。
#include #include const int maxn = 27;
char str[maxn];
int vis[maxn];
int main ( )
if ( j < 0 ) //全部都達到最大字元就退出迴圈
break ;
str[j ++] ++; //第j個++
while ( j < w )
j ++;
}if ( flag == 0 )
break ;
puts ( str );
}return 0;
}
Jam的計數法
jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小 寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前 面的字母小於排在它後面的字母。我們把這樣的 數字 稱為jam數字。在jam數字中,每個...
JAM的計數法
經典的題目了,自己想了個新方法 方法 先從低位往高位找到乙個可以加的位數,然後把後面的數變為前面那個數加1 建議先從主程式開始看。本人蒟蒻,不好請原諒 方法 先從低位往高位找到乙個可以加的位數,然後把後面的數變為前面那個數加1 建議先從主程式開始看。include include include u...
Jam的計數法
時間限制 1 sec 記憶體限制 128 mb 題目描述 jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我...