题目 1886: [蓝桥杯][2017年第八届真题]包子凑数(欧几里得+完全背包)
题目:
时间限制: 1Sec 内存限制: 128MB 提交: 1049 解决: 365
题目描述
小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。
每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。
当然有时包子大叔无论如何也凑不出顾客想买的数量。比如一共有3种蒸笼,分别能放4、5和6个包子。而顾客想买7个包子时,大叔就凑不出来了。
小明想知道一共有多少种数目是包子大叔凑不出来的。
输入
第一行包含一个整数N。(1 <= N <= 100)
以下N行每行包含一个整数Ai。(1 <= Ai <= 100)
输出
一个整数代表答案。如果凑不出的数目有无限多个,输出INF。
样例输入
2
4
5
样例输出
6
分析:
拿到这道题,我就知道要用完全背包来判断是否装满问题,但却不清楚怎样判无限的情况,猜想和素数有关,因为哥德巴赫猜想:任意大于2的偶数都可写成两个质数之和。但是我没想出来,后来问了会长,才知道要用拓展欧几里得判是否所有数互质,好的吧。特殊情况:不构成的数为INF时:充分条件是:包子的数目最大公约数都不为1,(即包子的数目都为一个数的倍数,这个数不是1){欧几里得扩展变形},但数据挺弱的,不考虑特判也能过。
AC代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
const int M=1e6+10;
int t,ans;
int a[110],dp[M];
int gcd(int x,int y){return y==0?x:gcd(y,x%y);
}
int main(){scanf("%d",&t);scanf("%d",&a[1]);ans=a[1];for(int i=2;i<=t;i++){scanf("%d",&a[i]);ans=gcd(ans,a[i]);}if(ans!=1) printf("INF\n");else{memset(dp,0,sizeof(dp));dp[0]=1;for(int i=1;i<=t;i++){for(int j=0;j<M;j++){if(dp[j])dp[j+a[i]]=1;}}int num=0;for(int i=1;i<M;i++)if(!dp[i])num++;printf("%d\n",num);}return 0;
}
题目 1886: [蓝桥杯][2017年第八届真题]包子凑数(欧几里得+完全背包)相关推荐
- 题目 1886: 蓝桥杯2017年第八届真题-包子凑数
时间限制: 1Sec 内存限制: 128MB 提交: 2378 解决: 789 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼 ...
- [蓝桥杯][2017年第八届真题]包子凑数(解题报告)
问题 1886: [蓝桥杯][2017年第八届真题]包子凑数 时间限制: 1Sec 内存限制: 128MB 提交: 406 解决: 118 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家 ...
- 凑数算法 java_[蓝桥杯][2017年第八届真题]包子凑数 (Java代码)
解题思路: 背包问题,然后需要求最大公约数. 很容易可以理解,当所有笼包子全部为偶数,比如2,4,6,那完了,有无限多种方案. 再看一个例子,当全部为3,6,9的时候,能够推出来嘛?也不能,为什么呢? ...
- 题目 1878: 蓝桥杯2017年第八届真题-青蛙跳杯子
题目 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. ...
- 题目 1885: [蓝桥杯][2017年第八届真题]分巧克力+二分
题目: 题目描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧克 ...
- [蓝桥杯][2017年第八届真题]小数第n位(数学)
题目描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数. 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式. 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始 ...
- [蓝桥杯][2017年第八届真题]小计算器(模拟)
题目描述 模拟程序型计算器,依次输入指令,可能包含的指令有 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个当前进制的数 运算指令:'ADD','SUB','MUL','DIV', ...
- [蓝桥杯][2017年第八届真题]合根植物
题目描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列).每个格子里种了一株合根植物. 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成 ...
- [蓝桥杯][2017年第八届真题]拉马车(String)
题目描述 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. 其规则简述如下: 假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的随机的纸 ...
最新文章
- eclipse Debug中step into功能失灵的问题
- Xcode8 注释快捷键无效, 解决方案
- CodeForces - 1559D2 Mocha and Diana (Hard Version)(思维)
- 发布一个WTL实现的QQ2009登录窗口源码
- Machine Learning Mastery 博客文章翻译:深度学习与 Keras
- js:select的选择改变事件,获取当前选择的值
- (转)一步一步Asp.Net MVC系列_权限管理之权限控制
- session同步问题
- 3500常用汉字书法体检测数据集
- 使用google翻译api
- Ubuntu切换阿里源
- DelayQueue延时队列操作实例
- 第十一章:如何拆分项目目标?
- 阿里数据仓库架构与模型设计
- CRACK:CAD Exchanger SDK 3.15.0/MAC/WIN/LINUX/Android
- 开关磁阻电机的直接瞬时转矩控制(DITC)
- 【算法】NP完全问题以及世界数学七大难题
- 直播平台基本功能解读:以呆萌直播为例的技术剖析
- acr38u PHP调用,ACS ACR38U-N1智能卡读卡器驱动
- ASO优化:为什么要做APP竞品分析
热门文章
- Git之撤销add操作
- C和指针之字符串编程练习9(在参数1中查找匹配参数2额任意字符)
- Android之平时遇见的异常和错误总结(不断更新)
- python3.6字典有序_为什么从Python 3.6开始字典有序并效率更高
- java黄油刀_一篇文章玩转ButterKnife,让代码更简洁
- mysql bigint转string_无语了,直到今天,我才揪出MySQL磁盘消耗迅猛的“真凶”!...
- 16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!
- 见识过世界的强大,才能拥有掌握世界的力量
- Linux系统管理员的Bash指南,11条Bash实践经验!
- chrome 插件 页面请求转发_巧用Chrome插件二三事