小凯的疑惑PLUS

文章描述了一个数学问题,小凯有互素面值的金币,无法支付某些商品。最小无法支付金额是两面值乘积减去两者之和。无法支付的商品数量是(a-1)*(b-1)/2,其中a和b是金币面值。此问题涉及到数论和算法。

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

问题描述

小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。

现在小凯想知道:

  1. 在无法准确支付的物品中,最贵的价值是多少金币?

  2. 共有多少种无法支付的物品?

注意:输入数据保证存在小凯无法准确支付的商品。

解法

(1)假设两种钱每种最少要拿一次(也就是不能不拿),不能凑成的最小钱数为k,因为a和b互质,显然,k = a * b,(当k = a * b 时,由于ab互质,要么a拿b个,要么b拿a个)。
由于a和b可以一样都不拿,所以ans =k-a-b=a*b-a-b
(2)因为ab互质,所以a,b其中一个肯定是奇数。
	设共有ans2个数不能购买
    <1>a,b其中一个为偶数
    推出ans2=((a-1)*(b-2)+(a-1))/2或((a-2)*(b-1)+(b-1))/2
化简得:ans2=(a-1)*(b-1)/2    
    <2>a,b全为奇数
    推出ans2=(a-1)*(b-1)/2
综上ans=(a-1)*(b-1)/2

下面是枚举的几个例子(方便理解):

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值