给定n种砝码,每种砝码的数量无限,还有一个天平,判断是否能测量任意重量的砝码

给定无限数量的n种砝码,根据其重量判断能否通过组合称出任意整数重量的物品。关键在于砝码重量的最大公约数是否为1。若为1,则能称出任意重量,输出YES;否则,输出NO。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

给定几种重量的砝码,数量不限,判断是否可以称出任意重量的物品。
输入规则,第一行输入一个整数n,表示有n种砝码;然后挨个输入每个砝码的重量。可以称重的物品都是整数。能,就输出YES;不能,输出NO。

示例1
输入:

1
1

输出:

YES

第一个1是有一种重量的砝码,第二个1是这个砝码是多重。这样肯定可以称出任意重量的物品。

示例2
输入:

2
2 3

输出:

YES

第一个2是有两种重量的砝码,第二行2 3表示每种砝码重量是2和3,那么也是可以称出任意重量的物品。

示例3
输入:

2
2 4

输出:

NO

这一组只能得到2N物品的重量,无法称出奇数物品的重量。

思路:如果给定砝码种包含重量为1的砝码,显然一定可以称出任意重量,如果若干个砝码经过换算能得到重量 1 ,则也可以称出任意重量的砝码。
比如3,5,2x3-5=1,显然我们可以通过3,5两个砝码称出任意的重量。

那么满足什么条件的砝码可以得到重量1呢?

定理:如果a1,a2,…,an是正整数,那么方程a1x1+a2x2+…+an*xn=c有整数解,当且仅当d=(a1,a2,……,an)能整除c,另外当存在一个解的时候,那么方程有无穷多个解

a1 a2表示砝码质量,x1 x2表示这种砝码需要几个,把c设置为1,就是我们需要解决的问题,等价于n元一次方程a1x1+a2x2+…+an*xn=1是否有解。也就是求给定的n种砝码重量的最大公约数是1.
即:当a1,a2,a3,a4,…an 这n个正整数的最大公约数是1时,他们可以表示任意的重量。
(说明:如果两个数的最大公约数是1 ,那

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值