zcmu-2098
2098: 買不到的數目
Time Limit:?1 Sec??Memory Limit:?128 MBSubmit:?44??Solved:?34
[Submit][Status][Web Board]
Description
小明開了一家糖果店。他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。
小朋友來買糖的時候,他就用這兩種包裝來組合。當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。
你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。大于17的任何數字都可以用4和7組合出來。
本題的要求就是在已知兩個包裝的數量時,求最大不能組合出的數字。
Input
兩個正整數,表示每種包裝中糖的顆數(都不多于1000)
Output
一個正整數,表示最大不能買到的糖數
Sample Input
4 7Sample Output
17HINT
Source
思路:數論和模擬了? ?,,兩個數不能由他們的倍數和組成的只有小于他們的最小公倍數了,然后在從上往下枚舉,不能由這兩個數組成說明為答案。
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<cstdlib> #include<vector> #include<stack> #include<queue> #include<map> #include<set> #include<list> #include<ctime> #include<algorithm> using namespace std;int gcd(int a,int b) {return b==0?a:gcd(b,a%b); } int main() {int x,y,k;scanf("%d%d",&x,&y);int p=x*y/gcd(x,y);int flag=0;for(k=p;k>=1;k--){flag=0;for(int i=0;i<=k/x;i++){for(int j=0;j<=k/y;j++){if(x*i+y*j==k){flag=1;break;}}if(flag==1)break;}if(flag==0)break;}printf("%d\n",k);return 0; }與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
- 上一篇: springcloud Feign工程熔
- 下一篇: C语言递归算法(二)