小明開了一家糖果店。他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。
小朋友來買糖的時候,他就用這兩種包裝來組合。當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。
你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。大於17的任何數字都可以用4和7組合出來。
本題的要求就是在已知兩個包裝的數量時,求最大不能組合出的數字。
輸入:兩個正整數,表示每種包裝中糖的顆數(都不多於1000)
要求輸出:
乙個正整數,表示最大不能買到的糖數
不需要考慮無解的情況
例如:使用者輸入:
4 7程式應該輸出:
17再例如:
使用者輸入:
3 5程式應該輸出:
7資源約定:
峰值記憶體消耗 < 64m
cpu消耗 < 3000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。
所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。
注意: main函式需要返回0
注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。
注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。
提交時,注意選擇所期望的編譯器型別。
j解析:a[0]中存最小的,a[1]中存大的那個,如果當有a[0]個連續的數都可以買到時,那麼後面的樹就都可買到了,比如4個連續的數18 19 20 21 都可用4 , 7 得到,那麼22 可以由18加4得到,依次類推,後面的就都可得到,所以最大不能買到的數就是18 - 1;
**:
#includeint main()
a[0] = m, a[1] = n, num = 1;
p = 2, pm = pn = 0;
if(m + 1 == n)//如果m和n是兩個連續的數
num = 2;
while(num < m)
else if(a[pm] + m == a[pn] + n)
else
if(a[p] == a[p -1] + 1)
else if(a[p] != a[p - 1] + 1)
num = 1;
p++;
} printf("%d\n", a[p - m] - 1);
return 0;
}
買不到的數目
小明開了一家糖果店。他別出心裁 把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。小朋友來買糖的時候,他就用這兩種包裝來組合。當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。大於17的任何數字都可以用4和7組合出來。本題...
買不到的數目
小明開了一家糖果店。他別出心裁 把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。小朋友來買糖的時候,他就用這兩種包裝來組合。當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。大於17的任何數字都可以用4和7組合出來。本題...
買不到的數目
小明開了一家糖果店。他別出心裁 把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。小朋友來買糖的時候,他就用這兩種包裝來組合。當然有些糖果數目是無法組合出來的,比如要買10 顆糖。你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。大於17的任何數字都可以用4和7組合出來。本題的...