買不到的數目

2021-06-20 21:11:41 字數 1248 閱讀 9574

小明開了一家糖果店。他別出心裁:把水果糖包成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組合出來。本題的...