题目大意: 给出 x , y x,y x,y,找出最大的不能表示为 a x + b y ax+by ax+by 的数。
题解
设答案为 a n s ans ans。
满足要求的数都形如 a x + b y ax+by ax+by,满足 a x ≡ 0 ( m o d y ) ax\equiv 0 \pmod y ax≡0(mody)。
显然,当满足 b ≥ 0 b\geq 0 b≥0 时,这个数不可能成为 a n s ans ans,所以有 b < 0 b<0 b<0。
又因为答案要最大,所以 b b b 取 − 1 -1 −1。
显然 a a a 不能大于等于 y y y,如果 a ≥ y a\geq y a≥y ,那么 a a a 可以表示为 c y + d cy+d cy+d,那么这个数 a x + b y ax+by ax+by 又可以表示为 d x + ( b + c ) y dx+(b+c)y dx+(b+c)y,而 b + c ≥ 0 b+c\geq 0 b+c≥0,而 y y y 的系数应该小于 0 0 0 ,所以 a a a 不能大于等于 y y y。
于是有 a < y a<y a<y。
又因为这个数不可能是负数,所以又有 a > 0 a>0 a>0。
因为答案要最大,所以 a a a 取 y − 1 y-1 y−1。
所以 a n s = a x + b y = ( y − 1 ) x − y = x y − x − y ans=ax+by=(y-1)x-y=xy-x-y ans=ax+by=(y−1)x−y=xy−x−y。
代码如下:
#include <cstdio>
long long a,b;
int main()
{
scanf("%lld %lld",&a,&b);
printf("%lld",a*b-a-b);
}