题目描述:从1,2,3……n个整数中选出k个数,使得这些数的的最大公约数最大,求这个最大公约数。1<=k<=n<=2*10^9
我们不妨假设最后的答案为a,则对于我们选择的一组情况{x1,x2……xk},不妨令这些数是从小到大排序的,那么对于a,会有x1>=a,x2>=2*a,x3>=3*a,……xk>=k*a……由于xk<=n,则有k*a<=n;则可以令a=[n/k],那么就取出了xi=[n/k]*i,这组显然是满足最大公约数为a,并且a取得了最大值。
代码如下:(事实上没啥发的必要********)
#include<stdio.h>
int main()
{
int n, a;
scanf("%d%d", &n, &a);
printf("%d", n / a);
}