Jam的計數法

2021-07-09 22:29:57 字數 1432 閱讀 8692

jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小 寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的(使用相同個數的字母),英文本母按原先的順序,排在前 面的字母小於排在它後面的字母。我們把這樣的「數字」稱為jam數字。在jam數字中,每個字母互不相同,而且從左到右是嚴格遞增的。每次,jam還指定 使用字母的範圍,例如,從2到10,表示只能使用這些字母。如果再規定位數為5,那麼,緊接在jam數字 「bdfij」之後的數字應該是「bdghi」。(如果我們用u、v依次表示jam數字「bdfij」與「bdghi」,則u〈v,且不存在jam數字 p,使u〈p〈v)。你的任務是:對於從檔案讀入的乙個jam數字,按順序輸出緊接在後面的5個jam數字,如果後面沒有那麼多jam數字,那麼有幾個就 輸出幾個。

有2行,第1行為3個正整數,用乙個空格隔開:

s t w

(其中s為所使用的最小的字母的序號,t為所使用的最大的字母的序號。w為數字的位數,這3個數滿足:1≤s〈t≤26, 2≤w≤t-s )

第2行為具有w個小寫字母的字串,為乙個符合要求的jam數字。

所給的資料都是正確的,不必驗證。

最多為5行,為緊接在輸入的jam數字後面的5個jam數字,如果後面沒有那麼多jam數字,那麼有幾個就輸出幾個。每行只輸出乙個jam數字,是由w個小寫字母組成的字串,不要有多餘的空格。

2 10 5

bdfij

bdghi

bdghj

bdgij

bdhij

befgh

個人思路:從最後一位向前尋找可以變大的字母;以字母的ascii值為變數,最後一位的最大字母ascii值為96+max(字母範圍的最大值)-x(表示倒數第幾位,此時x=1)+1

最後第二位的最大字母ascii值為96+max(字母範圍的最大值)-x(表示倒數第幾位,此時x=2)+1,若該位達到最大的字母,則計算前一位的ascii值,否則該位ascii值加一,其後面的字母替換為符合條件的最小字元。

**:#include

#include

函式輸入:input中的符合條件的jam數字,最小的字母的序號,最大的字母的序號,數字的位數,計算的位置

void fun (char str, int min, int max, int len, int x);

int main()

;int i;

scanf("%d %d %d", &min, &max, &len);

scanf("%s", str);

for (i=0; i<5; i++)                           //最多輸出5個符合條件的值

return 0;

}void fun (char str, int min, int max, int len, int x)

}else}}

Jam的計數法

題目描述 jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的 數字 稱為 jam數字。在 jam數...

JAM的計數法

經典的題目了,自己想了個新方法 方法 先從低位往高位找到乙個可以加的位數,然後把後面的數變為前面那個數加1 建議先從主程式開始看。本人蒟蒻,不好請原諒 方法 先從低位往高位找到乙個可以加的位數,然後把後面的數變為前面那個數加1 建議先從主程式開始看。include include include u...

Jam的計數法

時間限制 1 sec 記憶體限制 128 mb 題目描述 jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我...