蓝桥杯 1427 买不到的数目 (模拟)
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯 1427 买不到的数目 (模拟)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述
小明開(kāi)了一家糖果店。他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣(mài)。?
小朋友來(lái)買(mǎi)糖的時(shí)候,他就用這兩種包裝來(lái)組合。當(dāng)然有些糖果數(shù)目是無(wú)法組合出來(lái)的,比如要買(mǎi)? 10? 顆糖。?
你可以用計(jì)算機(jī)測(cè)試一下,在這種包裝情況下,最大不能買(mǎi)到的數(shù)量是17。大于17的任何數(shù)字都可以用4和7組合出來(lái)。?
本題的要求就是在已知兩個(gè)包裝的數(shù)量時(shí),求最大不能組合出的數(shù)字。?
輸入
兩個(gè)正整數(shù),表示每種包裝中糖的顆數(shù)(都不多于1000)?
輸出
一個(gè)正整數(shù),表示最大不能買(mǎi)到的糖數(shù)?
樣例輸入
4 7
樣例輸出
17
分析:
對(duì)于要找出最大不能組合成的值,肯定要從大往小找,那么確定查找的上線就會(huì)是十分重要的,這個(gè)上限就應(yīng)該是兩個(gè)數(shù)的最小公倍數(shù),然后從這里開(kāi)始找。
代碼:
#include <iostream>#include <stdio.h>#include <cstring>using namespace std;int gcd(int a, int b) { return a%b == 0?b:gcd(b,a%b); //求出兩個(gè)數(shù)的最大公約數(shù) } int main(){int n,m,k,j,i;int flag=0;scanf("%d%d",&n,&m);int op=n*m/gcd(n,m);//根據(jù)兩個(gè)數(shù)的最大公約數(shù),求出兩個(gè)數(shù)的最小公倍數(shù) for( k=op;k>=1;k--)//因?yàn)槲覀円业降氖亲畲蟮?#xff0c;所以應(yīng)該從大往小找 {flag=0;for( i=0;i<=k/n;i++){for( j=0;j<=k/m;j++){if(n*i+m*j==k)//表示可以組合成當(dāng)前的個(gè)數(shù),就不用往下循環(huán)了 {flag=1;break;}}if(flag==1)//當(dāng)前這個(gè)k已經(jīng)找到了 break;}if(flag==0)//當(dāng)前這個(gè)k無(wú)論如何也找不出來(lái),也就意味著沒(méi)法組合,即為所求 break; }printf("%d",k); return 0;}轉(zhuǎn)載于:https://www.cnblogs.com/cmmdc/p/6729692.html
總結(jié)
以上是生活随笔為你收集整理的蓝桥杯 1427 买不到的数目 (模拟)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 最大整数(Noip1998连接多位数)
- 下一篇: 修复使用codeXmlDocument/