[蓝桥杯][2013年第四届真题]买不到的数目-模拟,数论
生活随笔
收集整理的這篇文章主要介紹了
[蓝桥杯][2013年第四届真题]买不到的数目-模拟,数论
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
小明開了一家糖果店。他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。
小朋友來買糖的時候,他就用這兩種包裝來組合。當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。
你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。大于17的任何數字都可以用4和7組合出來。
本題的要求就是在已知兩個包裝的數量時,求最大不能組合出的數字。
輸入
兩個正整數,表示每種包裝中糖的顆數(都不多于1000)
輸出
一個正整數,表示最大不能買到的糖數
樣例輸入
4 7
樣例輸出
17
解題思路:
把一種包裝的糖果的量設為a,第二種包裝的糖果的量設為b,用標記數組vis[a] = 1,表示a可以由這兩種糖果的數量組成,那么只要在原先就可以組成的量,加上若干a或者若干b就一定成立,直接看代碼,你也看得懂。
代碼如下:
#include <iostream> using namespace std; const int N = 1000010; int vis[N];int main() {int a, b;int ans;cin >> a >> b;vis[a] = 1;vis[b] = 1;for (int i = 0; i <= a * b; i++) {if (vis[i] == 1) {vis[i + a] = 1;vis[i + b] = 1;}}for (int i = 0; i <= a * b; i++) {if (vis[i] == 0)ans = i;}cout << ans << endl;return 0; }數論做法:
總結
以上是生活随笔為你收集整理的[蓝桥杯][2013年第四届真题]买不到的数目-模拟,数论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux命令参数(linux命令 参数
- 下一篇: [蓝桥杯][2014年第五届真题]兰顿蚂