题目描述

小明开了一家糖果店。

他别出心裁:把水果糖包成4颗一包和7颗一包的两种。

糖果不能拆包卖。

小朋友来买糖的时候,他就用这两种包装来组合。

当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。

你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。

大于17的任何数字都可以用4和7组合出来。

本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。

输入格式

两个正整数 n,m,表示每种包装中糖的颗数。

输出格式

一个正整数,表示最大不能买到的糖数。

数据范围

2≤n,m≤1000,
保证数据一定有解。

输入样例:

4 7

输出样例:

17

引理:给定a,ba,b,若d=gcd(a,b)>1d=gcd(a,b)>1,则一定不能凑出最大数

结论:如果 a,ba,b 均是正整数且互质,那么由 ax+by,x≥0,y≥0ax+by,x≥0,y≥0 
不能凑出的最大数是 a * b - a - b

附:引自:acwing


C ++ 代码

#include <iostream>
using namespace std;

int n, m;

int main(){
    cin >> n >> m;
    cout << n * m - n - m << endl;//直接套用公式
    return 0;
}