Codeforces 1513D - GCD and MST(設計解題)

解法

由於我們要使 GCD 最大,因此必須使 n 都要是 x 的倍數,所以只需要判斷 x 可以被哪個因數整除,在判斷是否有大於 n,若有,則可以用 x / 因數 方式來解決;反之概念相同。

程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <bits/stdc++.h>
#define LOCAL
#define MAXN 0x3f3f3f
using namespace std;
int t, x, n;

int process(){
int ans = 0;
for(int i = 1; i * i <= x; i++){
if(x % i == 0){
//cout << "hi " << i << "\n";
if(i >= n) ans = max(ans, x/i);
if(x/i >= n) ans = max(ans, i);
}
}
return ans;
}

int main()
{
#ifdef LOCAL
freopen("in1.txt", "r", stdin);
#endif // LOCAL
cin >> t;
while(t--){
cin >> x >> n;
cout << process() << "\n";
}

return 0;
}
  • 版權聲明: 本部落格所有文章除有特別聲明外,均採用 Apache License 2.0 許可協議。轉載請註明出處!
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: