P1372 又是毕业季I

原题链接

考察:推导+gcd(?)

求在1~n的范围内,取k个数求它们的最大公约数.

还以为是一个个枚举,看数据范围感觉不对,结果看了讨论区....我果然fw

正确思路:

        k个数的最大公约数.假设公约数为x,则这k个数为x,2*x,3*x....k*x我们需要让k*x尽量靠近n,所以答案显而易见...

 1 #include <iostream>
 2 using namespace std;
 3 int gcd(int a,int b)
 4 {
 5     return b?gcd(b,a%b):a;
 6 }
 7 int main()
 8 {
 9     int n,k;
10     scanf("%d%d",&n,&k);
11     printf("%d",n/k);
12     return 0;
13 }

 

posted @ 2021-01-16 11:43  acmloser  阅读(39)  评论(0编辑  收藏  举报