博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
试题 历届试题 包子凑数(exgcd+完全背包)
阅读量:3950 次
发布时间:2019-05-24

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

由扩展欧几里得知:ax+by=gcd(x,y) 这个方程一定有解

我们这个题目要求a和b都大于等于0,且x,y也都大于0
所以如果gcd(x,y)等于1时,我们可以左右两边同时
乘以一个数,这样就能凑出任意数。也就是当所有组合
的gcd如果都不为1时,输出INF,否则根据完全背包求
解答案。

代码如下:

#include
using namespace std;int n;int dp[10007],a[107];int main(){
int flag=0; cin>>n; for(int i=1;i<=n;i++) {
cin>>a[i]; } int g=a[1]; for(int i = 2; i <= n; i++){
g=__gcd(g, a[i]); if(g==1) flag=1;//a1*x1+a2*x2+...+an*xn=gcd(a1,a2,...an) } if(!flag) cout<<"INF"<

转载地址:http://bsgwi.baihongyu.com/

你可能感兴趣的文章
Android应用程序的完全退出
查看>>
Task和Activity相关的一些属性
查看>>
JAVA系统属性之user.home
查看>>
Android代码截屏
查看>>
Android中打印代码的调用层次
查看>>
成功者十三个价值连城的习惯
查看>>
特别成功的人会做6件事
查看>>
Android: 用jni 获取MAC地址
查看>>
字符串列表的C语言实现:c_strlist
查看>>
客户沟通的方式:礼貌待客沟通方式,技巧推广沟通方式,个性服务沟通方式
查看>>
用弹性工作制留住员工
查看>>
知识=经验×反思2
查看>>
领导者如何发现关键问题
查看>>
学习无为领导力
查看>>
卓越领导看过程
查看>>
领导力与各种循环挑战
查看>>
达成谈判协议 - 避免操之过急
查看>>
销售人说话“十大忌”
查看>>
营销中的“战略非对称”
查看>>
android 如何开关Mediatek开发的Feature
查看>>