[Noip2017]小凯的疑惑 exgcd 同余类BFS
小凯的疑惑
时空限制 $ \quad $ 1000ms / 256MB
题目描述
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。
每种金币小凯都有 无数个。
在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。
现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?
注意:输入数据保证存在 小凯无法准确支付的商品。
输入输出格式
输入格式
两个正整数 $ a $ 和 $ b $ ,它们之间用一个空格隔开,表示小凯中金币的面值。
输出格式:
一个正整数 $ N $ ,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
输入输出样例
输入样例#1
3 7
输出样例#1
11
说明
【输入输出样例 1 说明】
小凯手中有面值为 $ 3 $ 和 $ 7 $ 的金币无数个,
在不找零的前提下无法准确支付价值为 $ 1,2,4,5,8,11 $ 的物品,
其中最贵的物品价值为 $ 11 $ ,比 $ 11 $ 贵的物品都能买到,比如:
$ 12 = 3 \times 4 + 7 \times 0 $
$ 13 = 3 \times 2 + 7 \times 1 $
$ 14 = 3 \times 0 + 7 \times 2 $
$ 15 = 3 \times 5 + 7 \times 0 $
【数据范围与约定】
对于 $ 30 $ %的数据: $ 1 \le a,b \le 50 $ 。
对于 $ 60 $ %的数据: $ 1 \le a,b \le 10^4 $ 。
对于 $ 100 $ %的数据:$ 1 \le a,b \le 10^9 $ 。
题解
-
常规解法:
-
根据 $ exgcd $ ,不考虑 $ p,q \ge 0 $ 的情况下,通解 $ p=p_0 + k \times b, q=q_0- k \times a $
-
$ p,q \ge 0 $ 时,不能表示的必然满足 $ p>0, \quad q>0, \quad p-b<0, \quad q+a>0 $
-
应取 $ p=b-1,q=-1 $ ,此时 $ p \times a+q \times b $ 有最大值
-
答案为 $ a*b-a-b $
-
同余类 $ BFS $ 思想:
-
编号为 $ 0~a-1 $ 的 $ a $ 个点,每个点 $ x $ 到 $ (x+b)\quad mod \quad a $ 连边
-
由 $ a,b $ 互质可知 $ 0,b,2 \times b, \dots , (a-1) \times b $ 在 $ mod \quad a $ 后必然各不相同
-
这也是各个同余类中最小能标识的非负整数(最短路)
-
不能表示的,就是再减掉 $ a $ ,其中最大的是 $ (a-1)*b-a $