历年试题——买不到的数目
2018-06-17 21:59:00来源:未知 阅读 ()
问题描述
小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。
小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。
你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。
本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。
输入格式
两个正整数,表示每种包装中糖的颗数(都不多于1000)
输出格式
一个正整数,表示最大不能买到的糖数
样例输入1
样例输出1
样例输入2
样例输出2
//买不到的数目 自己理解后打出来的 //利用输入a b 循环相乘又不能超过n(我们定义的比较大的数) //然后用数组标记可以买到的数 标记为1 不能买默认都是0 //最后遍历数组 如果有连续的a 是可以买到的 那 减去a最近的不能买到 标记为 //0的那个数值就是 最大买不到数目 其中a要保证是小的那个输入数就行了 /* #include <iostream> #include <algorithm> #include <cstring> #include <cmath> using namespace std; long long n=100000; int d,x; int cha(int a[]) { int sum=0; for(int i=0;i<n;i++) { if(a[i]==1) { sum++; if(sum>=x) return i-x;//如果连续都可以买到 那减去x就是不能买的数目 } else { sum=0; } } return -1; } void f(int a,int b) { int c[n]; for(int i=0;i<n/a;i++) //为了确保后面的乘a b 不会溢出 for(int j=0;j<(n-i*a)/b;j++) { if(i*a+b*j < n) c[i*a+j*b] =1;//表示可以找到糖果 } cout << cha(c); } int main() { cin >> x >> d; if(x>d) { int t=x; x=d; d=t; } f(x,d); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- FFmpeg编译找不到库文件 2018-06-18
- xmlDoc.SelectNodes用法(获取不到节点时注意事项) 2018-06-18
- .NET中TextBox控件设置ReadOnly=true后台取不到值 三种解决 2018-06-18
- 找不到方法:"!!0[] System.Array.Empty()" 2018-06-18
- C#实现较为实用的SQLhelper 2018-06-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash