博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数论——买不到的数
阅读量:6908 次
发布时间:2019-06-27

本文共 1987 字,大约阅读时间需要 6 分钟。

问题描述

小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。

小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。

你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。

本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。

输入格式

两个正整数,表示每种包装中糖的颗数(都不多于1000)

输出格式

一个正整数,表示最大不能买到的糖数

样例输入1
4 7
样例输出1
17
样例输入2
3 5
样例输出2
7
 
#include
#include
#define MAX 10000000using namespace std;bool a[MAX];int x, y, res;void _solv(){ cin >> x >> y; memset(a, 0, sizeof(a)); a[0] = 1; for (int i = 1; i < MAX; i++){ if (i >= x&&a[i - x])a[i] = 1; else if (i >= y&&a[i - y])a[i] = 1; } res = 0; for (int i = 1; i < MAX; i++){ if (i>res&&!a[i])res = i; }}int main(){ _solv(); cout << res << endl; system("pause"); return 0;}

本质:从0开始,看x和y能否覆盖到这个数。

按照蓝桥杯上给的提示,说欧几里得也能做,所以又试了一下,果然AC了!

//用数论或欧几里得算法#include
#include
#define MAX 10000000using namespace std;bool a[MAX];int x, y, res;void _solv(){ cin >> x >> y; memset(a, 0, sizeof(a)); a[0] = 1; for (int i = 1; i < MAX; i++){ if (i >= x&&a[i - x])a[i] = 1; else if (i >= y&&a[i - y])a[i] = 1; } res = 0; for (int i = 1; i < MAX; i++){ if (i>res&&!a[i])res = i; }}int _test(){ int i = 1; while (i){ if (i == 5)return 5; i++; }}bool _Euclid(int a){ if (a <= 0)return false; if (a%y == x||a%y==0){ return true; } else { return _Euclid(a - x); }}void _solv2(){ cin >> x >> y; res = 0; int time = 0; for (int i = 1; i < MAX; i++){ if (time == 10000)break; if (i>res && i%x!=0 && i%y!=0 && !_Euclid(i-x)){ res = i; time = 0; } else{ time++; } }}int main(){ _solv(); cout << res << endl; //cout<<_test(); _solv2(); cout << res << endl; system("pause"); return 0;}

只要注意一下连续time次未出现不能买到的数,就说明之后的数都可以买到了。可惜我不能证明!!!

转载于:https://www.cnblogs.com/littlehoom/p/3548642.html

你可能感兴趣的文章
怎样花两年时间去面试一个人
查看>>
Grails的目录结构
查看>>
使用SqlConnection显示连接信息
查看>>
TAM安装过程中遇到的问题
查看>>
android配置运行的时候出现无法找到PANIC: Could not open: C:\Users\Administrator\.android
查看>>
【随笔】居然又玩了两天
查看>>
python dict字典
查看>>
css:注释格式不当引起背景色无效
查看>>
每日英语:Do Women Like Child Care More Than Men?
查看>>
三张图片拼接成圆角框
查看>>
分享20个响应式web设计的必备jQuery插件
查看>>
(原创)CheckTool:CRC校验、累加和校验、异或和校验专业校验工具V1.0
查看>>
面试题34:丑数
查看>>
Linux内核学习笔记十——虚拟文件系统概念
查看>>
set header
查看>>
如何写Makefile文件
查看>>
Unsupported Oracle data type 101 encountered
查看>>
listview设置item间距和颜色渐变
查看>>
CentOS — 安装LevelDB & PHP LevelDB扩展
查看>>
C++深拷贝与浅拷贝
查看>>