洛谷P3951 小凱的疑惑 數論

2021-10-23 14:33:10 字數 1446 閱讀 5160

小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有 無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小 凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意:輸入資料保證存在 小凱無法準確支付的商品。

兩個正整數 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...