洛谷P1372 又是毕业季I【数论】

题目https://www.luogu.org/problemnew/show/P1372

题意

在1~n之中找k个数,使得他们的最大公因数最大。

思路

假设ans是答案,说明选择的k个数分别是ans, 2ans, 3ans,...,kans

如果kans<n,那么这k个数肯定是可以取到的。

要找到最大的ans,就只用找到小于且最接近n/ans的整数

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<map>
 4 #include<set>
 5 #include<cstring>
 6 #include<algorithm>
 7 #include<vector>
 8 #include<cmath> 
 9 #include<stack>
10 #include<queue>
11 #include<iostream>
12 
13 #define inf 0x7fffffff
14 using namespace std;
15 typedef long long LL;
16 typedef pair<string, string> pr;
17 
18 int n, k; 
19 //const int maxn = 1e9 + 5;
20 
21 
22 int main()
23 {
24     scanf("%d%d", &n, &k);
25     cout<<n / k<<endl;        
26     
27     return 0; 
28 }
原文地址:https://www.cnblogs.com/wyboooo/p/10882377.html