题意:给两个互质的数n,m,问最大的不能表示的数是多少。
思路:做的时候列了几个式子,看了下结果猜会不会是n*m-n-m。但不知道原因,查了下网上的博客才弄清楚。有式子ax+by=c。若a,b互质,c为正整数,则必有整数解。所以在题目中不能表示的数的情况出现在非正整数解的时候,因为没有负数个硬币嘛。假设a>b,则max(ax+by)时,y=-1,此时就变为求ax-b的最大值。假设x>=b,那么我们可以把式子变为a(b+k)-b,很显然这式子可变为(a-1)b+ka,可以被表示。综上x取b-1时,式子最大且不能被表示。代入即得n*m-n-m。
AC代码:
#include<stdio.h>
#define ll long long
int main()
{
ll a,b;
scanf("%lld%lld",&a,&b);
printf("%lld\n",a*b-a-b);
return 0;
}
/*
3 7 11
2 3 1
2 5 3
3 4 5
3 5 7
*/