對於答案a,k*a是最接近
n的,即
a=n/k(
下取整)
,所以直接輸
n/k即可。
我的方法是
二分查詢
n/k真的沒有想到唉。
我找的最大公約數,如果當前的mid對應的個數比k大,就往大了找,否則往小裡找,對於邊界問題,要加一些特判。
#includeusingnamespace
std;
intn,k;
bool p(int
x)
if(i-1>=k)
return
true
;
return
false;}
intmain()
int l=1,r=n,mid;
while(lif(k==1
) cout
cout
<1,1
);
return0;
}
數論 又是畢業季I 又是畢業季II
題目簡化 為了把畢業晚會辦得更好,老師想要挑出默契程度最大的 k 個人參與畢業晚會彩排。可是如何挑呢?老師列出全班同學的號數 1,2,n 並且相信 k 個人的默契程度便是他們的最大公約數 這不是迷信哦 這可難為了他,請你幫幫忙吧!輸入格式 兩個空格分開的正整數n和k。n k 1 k 1e9,n 1e...
又是畢業季1 又是畢業季2
又是畢業季2 n k 又是畢業季2 一開始很容易想到列舉n個數取k個的所有組合,然後分別用輾轉相除法求最大公約數,但是複雜度明顯不符合要求,於是必須換一種思路。我們想到,k個數的公約數含義就是這k個數均含有某個因數,如果我們把所有數的因數全部求出來,發現有k個數均含有某個因數,那麼這個數必然是這k個...
洛谷 1372 又是畢業季I
叮鈴鈴鈴 隨著高考最後一科結考鈴聲的敲響,三年青春時光頓時凝固於此刻。畢業的欣喜怎敵那離別的不捨,憧憬著未來仍毋忘逝去的歌。1000多個日夜的歡笑和淚水,全凝聚在畢業晚會上,相信,這一定是一生最難忘的時刻!為了把畢業晚會辦得更好,老師想要挑出默契程度最大的k個人參與畢業晚會彩排。可是如何挑呢?老師列...