整数表示法

探讨了如何求解两个互质整数X和Y下,不能表示为aX+bY形式的最大整数n(a≥0,b≥0),并给出了一种简单有效的计算方法及其实现代码。

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

题目详情

我们知道,如果X,Y互素时aX+bY可以表示任意整数(其中a,b为整数)。如果设置条件X,Y>0,并且aX+bY>=0时,求能表示的整数集中连续的整数最小的是多少?

例如输入X=3,Y=4.整数集为0,3,4,6,7,8,9……则输出6;

输入1行X和Y,输出一行表示最小整数;

其中X,Y为32位整数且互素



答题说明

测试用例

5 6

20

1 2

0

2 3


思路: 这题目没有描述清楚,题目想说的就是:给定X, Y(互素),求不能表示成aX+bY且最大的整数n(其中

a,b>=0),输出n+1。假设任意正整数n = aX+ bY。当0<= a <= Y-1时, n的表达式唯一,即a, b的值唯一。

这时如果a增加Y那么b就减少X,如果a减少Y那么b就增加X, 也就是如果此时b<0,那么n就不能被表示,因为

b<0, 要使b>=0,那么b就至少要增加X,对应的a至少要减少Y,这样a就小于0了,即a>=0 和 b>=0不可兼得。

不能表示成aX+bY且最大的整数n(其中a,b>=0)的数就是在区间0<= a <= Y-1中,a取最大b也取最大. 即

a = Y -1, b = -1,此时n = (Y-1)X + (-1)Y = XY - X - Y, 输出n + 1 = (X - 1) * (Y -1).


代码如下:

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值