【NOIP2017提高Day1】小凱的疑惑
阿新 • • 發佈:2018-11-01
題目描述
小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有 無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小 凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意:輸入資料保證存在 小凱無法準確支付的商品。
完整題面
題解:
其實自己手寫幾個就能發現規律了。。。
好吧還是需要證明的,設答案為x 則有 x ≡ ma (modb) (1≤m≤b−1) 即 x = ma + nb (1≤m≤b−1),m最大隻能取b - 1,因為如果取b的話,原式變為x = (a + n) * b ,可以用a + n 個b湊成x,不符合題意。那我們再考慮x = ma + nb (1≤m≤b−1)這個式子,顯然n大於等於0時,x也可以用a和b表示出來,因此n需要小於0,那麼n取-1時得到的x是最大的,原式變為x = ma − b,由上面的範圍,m最大可以取b - 1,然後可以化為
x=(b−1)a−b=ab−a−b
即為最後的答案
程式碼:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<vector> #include<cmath> #define MAXA 10005 using namespace std; typedef long long LL; LL a,b; int main() { // freopen("math.in","r",stdin); // freopen("math.out","w",stdout); scanf("%lld %lld",&a,&b); printf("%lld",a * b - a - b); }