题目: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 }