【數論】洛谷P1372又是畢業季
阿新 • • 發佈:2017-05-16
自信 blog span 學校 描述 畢業 正整數 題目 如何
題目背景
“叮鈴鈴鈴”,隨著高考最後一科結考鈴聲的敲響,三年青春時光頓時凝固於此刻。畢業的欣喜怎敵那離別的不舍,憧憬著未來仍毋忘逝去的歌。1000多個日夜的歡笑和淚水,全凝聚在畢業晚會上,相信,這一定是一生最難忘的時刻!
題目描述
為了把畢業晚會辦得更好,老師想要挑出默契程度最大的k個人參與畢業晚會彩排。可是如何挑呢?老師列出全班同學的號數1,2,……,n,並且相信k個人的默契程度便是他們的最大公約數(這不是迷信哦~)。這可難為了他,請你幫幫忙吧!
PS:一個數的最大公約數即本身。
輸入輸出格式
輸入格式:
兩個空格分開的正整數n和k。(n>=k>=1)
輸出格式:
一個整數,為最大的默契值。
輸入輸出樣例
輸入樣例#1:4 2輸出樣例#1:
2
說明
【題目來源】
lzn原創
【數據範圍】
對於20%的數據,k<=2,n<=1000
對於另30%的數據,k<=10,n<=100
對於100%的數據,k<=1e9,n<=1e9(神犇學校,人數眾多)
題解
小測試掛了寫道水題漲漲自信。。。
不過雖然是水題但是那也是在想明白了思路之後的事。。。
所以簡單說一下思路
首先,若可能的最大公約數為a
取出的k個數為X1,X2,……,Xk且滿足X1<X2<……<Xk
那麽有X1>=a,X2>=2a,……,Xk>=ka
又∵Xk<=n
∴n>=ka,∴a<=n/k
又∵a為整數
∴a<=[n/k]([]為取整符號)。
另一方面,我們取[n/k],2*[n/k],……,k*[n/k]
它們的最大公約數a=[n/k],且它們都小於等於n大於等於1,且互不相等,滿足條件。
∴答案即為[n/k]。
算法復雜度o(1)。。。
對就是o(1)。。。
代碼我都覺得不用貼了。。。但還是貼上吧。。。
代碼如下:
#include<cstdio> int n,k; int main() { scanf("%d%d",&n,&k); printf("%d",n/k); return 0; }
【數論】洛谷P1372又是畢業季