jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的(使用相同個數的字母),英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的「數字」稱為jam數字。在jam數字中,每個字母互不相同,而且從左到右是嚴格遞增的。每次,jam還指定使用字母的範圍,例如,從2到10,表示只能使用這些字母。如果再規定位數為5,那麼,緊接在jam數字「bdfij」之後的數字應該是「bdghi」。(如果我們用u、v依次表示jam數字「bdfij」與「bdghi」,則u,且不存在jam數字p,使u)。你的任務是:對於從檔案讀入的乙個jam數字,按順序輸出緊接在後面的5個jam數字,如果後面沒有那麼多jam數字,那麼有幾個就輸出幾個。
輸入格式:
輸入有2行,第1行為3個正整數,用乙個空格隔開:
s t w (其中s為所使用的最小的字母的序號,t為所使用的最大的字母的序號。w為數字的位數,這3個數滿足:1≤s第2行為具有w個小寫字母的字串,為乙個符合要求的jam數字。
所給的資料都是正確的,不必驗證。
輸出格式:
輸出最多為5行,為緊接在輸入的jam數字後面的5個jam數字,如果後面沒有那麼多jam數字,那麼有幾個就輸出幾個。每行只輸出乙個jam數字,是由w個小寫字母組成的字串,不要有多餘的空格。
輸入樣例#1:
2 10 5bdfij
輸出樣例#1:
bdghibdghj
bdgij
bdhij
befgh
noip 2006 普及組 第三題
【題目分析】
前面兩道題的分析我都用了魔仙堡的思維來解哈哈哈(為了避免遭到老師毒打,我決定這道題好好寫)
這道題就是在s到t個樹中找出w個數,其實s沒啥用,並且要按照字典序排列
從後向前找未達到最大值t的s[len],後面的數比前面的數至少要大1
如果不符合條件(比t大或者前面這一位比他後面的大且不是最後一位),撤銷前面的操作,並退回到上一位
最終得到的len值,從第len位開始往後每一位都比前一位+1改變s串的值輸出直到i==5
#include#include#include
using
namespace
std;
inta,t,w,len;
char
t1;string
s;int
main()
for(int k=len+1;k)
s[k]=s[len]+k-len;
cout
}return0;
}
洛谷P1061 Jam的計數法題解
jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的 數字 稱為jam數字。在jam數字中,每個字母...
Jam的計數法
題目描述 jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的 數字 稱為 jam數字。在 jam數...
Jam的計數法
jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小 寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前 面的字母小於排在它後面的字母。我們把這樣的 數字 稱為jam數字。在jam數字中,每個...