裴蜀定理
-
向集合中添加数字实际上我们发现每一个数字都是以 a × x + b × y a \times x + b \times y a×x+b×y 形式向里面添加。其中 x , y x, y x,y 都是整数。
-
找到这个添加数字的形式其实就可以想到裴蜀定理,根据这个定理,我们知道式子 a × x + b × y a \times x + b \times y a×x+b×y 的结果只会是 g c d ( a , b ) gcd(a, b) gcd(a,b) 的倍数。又因为他的限制是小于等于 k k k ,因此总个数就是 k g c d ( a , b ) \frac{k}{gcd(a, b)} gcd(a,b)k ,其中 g c d ( a , b ) gcd(a, b) gcd(a,b) 是 a , b a, b a,b 的最大公约数,可以使用辗转相除法求解。那么最后的答案就是 k g c d ( a , b ) − 2 \frac{k}{gcd(a, b)} - 2 gcd(a,b)k−2。
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
void solve() {
long long a, b, k;
cin >> a >> b >> k;
cout << k / __gcd(a, b) - 2 << endl;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T = 1;
// cin >> T;
while (T--) {
solve();
}
return 0;
}