解题思路
经过朋友指点发现是数论。
首先我们设一个 k k k,
我们让 k = m a + n b k=ma+nb k=ma+nb( m , n m,n m,n 为参数, m ≥ 0 m≥0 m≥0)
当 n ≥ 0 n≥0 n≥0, k k k 一定能够被表示。那么我们就考虑 n < 0 n<0 n<0 的情况
设 n = − 1 n=-1 n=−1,得 k = m a − b k=ma-b k=ma−b,当 m ≥ b m≥b m≥b 时,这个数也可以被表示。
所以我们要让 m < b m<b m<b,为了让小凯不能准确支付的物品价值最大,
显然让 m = b − 1 m=b-1 m=b−1是最优的。
那我们将结论带进 m a − b ma-b ma−b,可得 ( b − 1 ) a − b (b-1)a-b (b−1)a−b;
化简得 a b − a − b ab-a-b ab−a−b。
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
long long a,b;
int main()
{
cin>>a>>b;
cout<<a*b-a-b;
return 0;
}