题目 :P3951 小凯的疑惑 :https://www.luogu.org/problemnew/show/P3951
题目描述
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有 无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在 小凯无法准确支付的商品。
输入输出格式
输入格式:两个正整数 aaa 和 bbb,它们之间用一个空格隔开,表示小凯中金币的面值。
输出格式:一个正整数 NNN,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
输入输出样例
3 7
11
说明
【输入输出样例 1 说明】
小凯手中有面值为333和777的金币无数个,在不找零的前提下无法准确支付价值为1,2,4,5,8,111, 2,4,5,8,111,2,4,5,8,11 的物品,其中最贵的物品价值为 111111,比11 1111 贵的物品都能买到,比如:
12=3×4+7×012 = 3 imes 4 + 7 imes 012=3×4+7×0
13=3×2+7×113 = 3 imes 2 + 7 imes 113=3×2+7×1
14=3×0+7×214 = 3 imes 0 + 7 imes 214=3×0+7×2
15=3×5+7×015 = 3 imes 5 + 7 imes 0 15=3×5+7×0
【数据范围与约定】
对于 30%30\%30%的数据: 1≤a,b≤501 le a,b le 50 1≤a,b≤50。
对于 60%60\%60%的数据: 1≤a,b≤1041 le a,b le 10^4 1≤a,b≤104。
对于100% 100\%100%的数据:1≤a,b≤1091 le a,b le 10^9 1≤a,b≤109。
https://www.cnblogs.com/jefflyy/p/7819858.html
这道题是一道有关数论的题。
针对于这种类型的题,我们总结有一般规律:
!!遇到数学问题就打表找规律!!
对于该题我们发现C=ab-a-b。
在这里,我们已知 :
赛瓦维斯特定理 :已知 a,b为大于1的正整数,gcd(a,b)=1,则使不定方程 ax+by=C无负数解的最大整数C=ab-a-b。
所以,我们可以轻松得出 :
1 // 2 #include <iostream> 3 #include <cstdio> 4 #include <cctype> 5 #include <cstring> 6 #include <cmath> 7 #include <algorithm> 8 using namespace std; 9 typedef unsigned long long ll; 10 #define ri register ll 11 12 ll a,b; 13 14 signed main() 15 { 16 ios::sync_with_stdio(0),cin.tie(0); 17 cin>>a>>b; 18 cout<<a*b-a-b<<' '; 19 return 0; 20 } 21 //