题目:

时间限制: 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年第八届真题]包子凑数(欧几里得+完全背包)相关推荐

  1. 题目 1886: 蓝桥杯2017年第八届真题-包子凑数

    时间限制: 1Sec 内存限制: 128MB 提交: 2378 解决: 789 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼 ...

  2. [蓝桥杯][2017年第八届真题]包子凑数(解题报告)

    问题 1886: [蓝桥杯][2017年第八届真题]包子凑数 时间限制: 1Sec 内存限制: 128MB 提交: 406 解决: 118 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家 ...

  3. 凑数算法 java_[蓝桥杯][2017年第八届真题]包子凑数 (Java代码)

    解题思路: 背包问题,然后需要求最大公约数. 很容易可以理解,当所有笼包子全部为偶数,比如2,4,6,那完了,有无限多种方案. 再看一个例子,当全部为3,6,9的时候,能够推出来嘛?也不能,为什么呢? ...

  4. 题目 1878: 蓝桥杯2017年第八届真题-青蛙跳杯子

    题目 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. ...

  5. 题目 1885: [蓝桥杯][2017年第八届真题]分巧克力+二分

    题目: 题目描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧克 ...

  6. [蓝桥杯][2017年第八届真题]小数第n位(数学)

    题目描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数. 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式. 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始 ...

  7. [蓝桥杯][2017年第八届真题]小计算器(模拟)

    题目描述 模拟程序型计算器,依次输入指令,可能包含的指令有 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个当前进制的数 运算指令:'ADD','SUB','MUL','DIV', ...

  8. [蓝桥杯][2017年第八届真题]合根植物

    题目描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列).每个格子里种了一株合根植物. 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成 ...

  9. [蓝桥杯][2017年第八届真题]拉马车(String)

    题目描述 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. 其规则简述如下: 假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的随机的纸 ...

最新文章

  1. eclipse Debug中step into功能失灵的问题
  2. Xcode8 注释快捷键无效, 解决方案
  3. CodeForces - 1559D2 Mocha and Diana (Hard Version)(思维)
  4. 发布一个WTL实现的QQ2009登录窗口源码
  5. Machine Learning Mastery 博客文章翻译:深度学习与 Keras
  6. js:select的选择改变事件,获取当前选择的值
  7. (转)一步一步Asp.Net MVC系列_权限管理之权限控制
  8. session同步问题
  9. 3500常用汉字书法体检测数据集
  10. 使用google翻译api
  11. Ubuntu切换阿里源
  12. DelayQueue延时队列操作实例
  13. 第十一章:如何拆分项目目标?
  14. 阿里数据仓库架构与模型设计
  15. CRACK:CAD Exchanger SDK 3.15.0/MAC/WIN/LINUX/Android
  16. 开关磁阻电机的直接瞬时转矩控制(DITC)
  17. 【算法】NP完全问题以及世界数学七大难题
  18. 直播平台基本功能解读:以呆萌直播为例的技术剖析
  19. acr38u PHP调用,ACS ACR38U-N1智能卡读卡器驱动
  20. ASO优化:为什么要做APP竞品分析

热门文章

  1. Git之撤销add操作
  2. C和指针之字符串编程练习9(在参数1中查找匹配参数2额任意字符)
  3. Android之平时遇见的异常和错误总结(不断更新)
  4. python3.6字典有序_为什么从Python 3.6开始字典有序并效率更高
  5. java黄油刀_一篇文章玩转ButterKnife,让代码更简洁
  6. mysql bigint转string_无语了,直到今天,我才揪出MySQL磁盘消耗迅猛的“真凶”!...
  7. 16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!
  8. 见识过世界的强大,才能拥有掌握世界的力量
  9. Linux系统管理员的Bash指南,11条Bash实践经验!
  10. chrome 插件 页面请求转发_巧用Chrome插件二三事