题目描述:
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。
输入格式
输入数据仅一行,包含两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯手中金币的面值。
输出格式
输出文件仅一行,一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
样例
Inputcopy | Outputcopy |
---|---|
3 7 | 11 |
思路:
参考题解:题解 P3951 【小凯的疑惑】 - Sky_crystal 的博客 - 洛谷博客 (luogu.com.cn)
设可以表达出来的数为k=x*a+y*b,当a的个数改变时k%a的值不变,b增加时会不断覆盖新的位置,最后可以从图上看出最后一个被覆盖的位置,再将这个位置减去a即可。
代码:
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long ll;
typedef double db;
int main() {
std::ios::sync_with_stdio(false);
ll a,b;
cin>>a>>b;
cout<<a*b-a-b;
return 0;
}