可能所有的數論題都是這樣玄學....
?
題目鏈接:https://www.luogu.org/problemnew/show/P1372
?
這道題通過暴力的枚舉可以發現是不可做的(當然我也不會做)
?
然后就有了這樣一個思路:
這道題就是求:從1~n中取k個數,使這k個數的最大公約數最大
因為兩個數成倍數關系時,它們的最大公因數是兩數中的較小數,也就是相對來說最大公因數較大(這與我們要求的東西相符)
返回題目,這k個數其實就是:x*1,x*2......x*k,即x的1~k倍,但必須保證x*k小于n。所以,符合條件的最大的x就是答案。
為了找出最大的x,必須使x*k盡量接近n,因為c++的整數除法有自動取整的功能,所以所有情況下,n / k都是最終答案...
?
然后就有了簡單到爆的AC代碼:


1 #include<cstdio> 2 3 int main(){ 4 int n, k; 5 scanf("%d%d", &n, &k); 6 printf("%d", n / k); 7 return 0; 8 }
?