小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有 無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小 凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意:輸入資料保證存在 小凱無法準確支付的商品。
兩個正整數 a 和 b,它們之間用乙個空格隔開,表示小凱中金幣的面值。
乙個正整數 n,表示不找零的情況下,小凱用手中的金幣不能準確支付的最貴的物品的價值。
輸入 #1
3
7
輸出 #1
11
【輸入輸出樣例 1 說明】
小凱手中有面值為3和7的金幣無數個,在不找零的前提下無法準確支付價值為1,2,4,5,8,11的物品,其中最貴的物品價值為 11,比11 貴的物品都能買到,比如:
12=3×4+7×0
13=3×2+7×1
14=3×0+7×2
15=3×5+7×0
當連續3個以上的物品都能買到時
【資料範圍與約定】
對於100%的資料:1≤a,b≤109
很暴力的乙個理解:
a ∗b
a*ba∗
b是a和b的最小公倍數,可以被a表示,也可以被b表示。
a ∗b
−a
a*b-a
a∗b−
a,相當於b∗(
a−1)
b*(a-1)
b∗(a−1
),只能被b表示。
a ∗b
−b
a*b-b
a∗b−
b,相當於a∗(
b−1)
a*(b-1)
a∗(b−1
),只能被a表示。
a ∗b
−a−b
a*b-a-b
a∗b−a−
b,不能被a或b表示。
那為什麼a∗b
−a−b
a*b-a-b
a∗b−a−
b是最大的呢?
因為所有大於a∗b
a*ba∗
b,也就是a和b的最小公倍數的數,都可以被表示。
因為a ∗b
a*ba∗
b再乘乙個係數其實就可以把後面的-a-b給抵消。就會變成a的倍數與b的倍數的和。可以被表示
如果不懂自己去算一算,看一下是不是。
真的很神奇~~
兩行**的程式真香~
#include
#include
#include
#include
typedef
long
long ll;
using
namespace std;
intmain()
洛谷P3951 小凱的疑惑
小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有 無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小 凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意 輸入資料保證存在 小凱無法準確支付的商品。輸入格式 兩個正整數 aa 和 bb 它們之間...
洛谷 P3951 小凱的疑惑 題解
洛谷 p3951 小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有 無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小 凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意 輸入資料保證存在 小凱無法準確支付的商品。兩個正整數 a aa 和 b...
洛谷 P3951 小凱的疑惑 數學
傳送門 problem p3951 1 題解 兩個互素的正整數a,b的非負線性組合ax by不能表示的最大整數為 a b a b 證明 例如a 5,b 6,則不能表示的最大整數為19,換言之所有大於19的整數都可以表示成ax by,其中x,y為非負整數,比如20 5 4 6 0,21 5 3 6 1...