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