有一天,王小子在遨游世界時,遇到了一場自然災(zāi)害。一個人孤獨的在一個島上,沒有吃的沒有喝的。在他饑寒交迫將要死亡時,死神來了。由于這個死神在成神之前是一個數(shù)學(xué)家,所以他有一個習(xí)慣,會和即死之人玩一個數(shù)學(xué)游戲,來決定是否將其靈魂帶走。游戲規(guī)則是死神給王小子兩個整數(shù)n(100<=n<=1000000),m(2<=m<=n),在1~n個數(shù)中,隨機(jī)取m個數(shù),問在這m個數(shù)中是否一定存在一個數(shù)是另一個數(shù)的倍數(shù),是則回答“YES",否則”NO"。如果王小子回答正確,將有再活下去的機(jī)會。但是他很后悔以前沒有好好學(xué)習(xí)數(shù)學(xué),王小子知道你數(shù)學(xué)學(xué)得不錯,請你救他一命。
輸入有多組測試數(shù)據(jù),不多于10000;每組有兩個數(shù)n,m;以文件結(jié)束符EOF為結(jié)束標(biāo)志。輸出輸出"YES"或"NO"。樣例輸入100 80100 20樣例輸出YESNO來源思路:鴿巢原理
假如存在倍數(shù)關(guān)系,有倍數(shù)關(guān)系的當(dāng)為一組。當(dāng)n為偶數(shù),最多有n/2組分組;假如是奇數(shù),最多有n/2+1組分組,統(tǒng)一寫為n/2+(n&1)組
將m個數(shù)分配,只有當(dāng)m>n時,才會出現(xiàn)一個組內(nèi)有兩個數(shù),且兩數(shù)為倍數(shù)關(guān)系
代碼:
#include<cstdio>int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { n=n/2+(n&1); if(m>n)PRintf("YES/n"); else printf("NO/n"); } return 0;}
新聞熱點
疑難解答