程序設計比賽試題_第1頁
程序設計比賽試題_第2頁
程序設計比賽試題_第3頁
程序設計比賽試題_第4頁
程序設計比賽試題_第5頁
已閱讀5頁,還剩63頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、文檔供參考,可復制、編制,期待您的好評與關注! 程序設計比賽試題最少錢幣數:【問題描述】這是一個古老而又經典的問題。用給定的幾種錢幣湊成某個錢數,一般而言有多種方式。例如:給定了6種錢幣面值為2、5、10、20、50、100,用來湊15元,可以用5個2元、1個5元,或者3個5元,或者1個5元、1個10元,等等。顯然,最少需要2個錢幣才能湊成15元。你的任務就是,給定若干個互不相同的錢幣面值,編程計算,最少需要多少個錢幣才能湊成某個給出的錢數。【要求】【數據輸入】輸入可以有多個測試用例。每個測試用例的第一行是待湊的錢數值M(1=M=2000,整數),接著的一行中,第一個整數K(1=K=10)表示

2、幣種個數,隨后是K個互不相同的錢幣面值Ki(1=Ki=1000)。輸入M=0時結束。【數據輸出】每個測試用例輸出一行,即湊成錢數值M最少需要的錢幣個數。如果湊錢失敗,輸出“Impossible”。你可以假設,每種待湊錢幣的數量是無限多的。【樣例輸入】156 2 5 10 20 50 10011 20【樣例輸出】2ImpossibleFeli的生日禮物【問題描述】Felicia的生日是11月1日(和Kitty是同一天生的哦)。于是Feli請來Kitty一起過生日。Kitty帶來了最新款的“Kitty貓”玩具準備送給Feli,不過她說,這份禮物可不是白送的。Feli要幫她一個忙,才能夠得到心儀已久

3、的玩具。Kitty說,“Kitty貓”玩具已經賣出了n!個,n=10100*_*,Kitty想知道確切的數字,而不是無聊的“一個數加個感嘆號”。Feli聽了大吃一驚。要知道,算出n!是一個無比艱巨的任務。Feli告訴Kitty,就算Feli算出n!,Kitty也看不下去,因為當n=20時,計算機的長整型已經存不下了(Kitty只能接受1-9之間的數字)。于是Kitty說,你只要告訴我n!最后一位非0的數就可以了。Feli想了想,立刻動手寫了個程序算出了正確的答案。現在,請你也試試看!注意哦,AC的男生將會得到一個“Hello Kitty”計算器(可編程,CPU 1THz,Mem 1TMB),A

4、C的女生將會得到一個仿真“Hello Kitty”寵物(善解人意,無須喂養,智商1101,附帶寫情書功能)。【要求】【數據輸入】每行一個n,直到輸入數據結束【數據輸出】對應輸入的n,每行輸出一個答案【樣例輸入】1101【樣例輸出】8蛇行矩陣【問題描述】蛇形矩陣是由1開始的自然數依次排列成的一個矩陣上三角形。【要求】【數據輸入】本題有多組數據,每組數據由一個正整數N組成。(N不大于100)【數據輸出】對于每一組數據,輸出一個N行的蛇形矩陣。兩組輸出之間不要額外的空行。矩陣三角中同一行的數字用一個空格分開。行尾不要多余的空格。【樣例輸入】5【樣例輸出】1 3 6 10 152 5 9 144 8

5、137 1211青蛙的約會【問題描述】兩只青蛙在網上相識了,它們聊得很開心,于是覺得很有必要見一面。它們很高興地發現它們住在同一條緯度線上,于是它們約定各自朝西跳,直到碰面為止。可是它們出發之前忘記了一件很重要的事情,既沒有問清楚對方的特征,也沒有約定見面的具體位置。不過青蛙們都是很樂觀的,它們覺得只要一直朝著某個方向跳下去,總能碰到對方的。但是除非這兩只青蛙在同一時間跳到同一點上,不然是永遠都不可能碰面的。為了幫助這兩只樂觀的青蛙,你被要求寫一個程序來判斷這兩只青蛙是否能夠碰面,會在什么時候碰面。我們把這兩只青蛙分別叫做青蛙A和青蛙B,并且規定緯度線上東經0度處為原點,由東往西為正方向,單位

6、長度1米,這樣我們就得到了一條首尾相接的數軸。設青蛙A的出發點坐標是x,青蛙B的出發點坐標是y。青蛙A一次能跳m米,青蛙B一次能跳n米,兩只青蛙跳一次所花費的時間相同。緯度線總長L米。現在要你求出它們跳了幾次以后才會碰面。【要求】【數據輸入】輸入只包括一行5個整數x,y,m,n,L,其中xy 2000000000,0 m、n 2000000000,0 L 2100000000。【數據輸出】輸出碰面所需要的跳躍次數,如果永遠不可能碰面則輸出一行Impossible【樣例輸入】1 2 3 4 5【樣例輸出】4敲七【問題描述】輸出7和7的倍數,還有包含7的數字例如(17,27,37.70,71,72

7、,73.)【要求】【數據輸入】一個整數N。(N不大于30000)【數據輸出】從小到大排列的不大于N的與7有關的數字,每行一個。【樣例輸入】20【樣例輸出】71417連續郵資問題【問題描述】G國發行了n種不同面值的郵票,并且規定每張信封上最多只允許貼m張郵票。連續郵資問題要求對于給定的n和m的值,給出郵票面值的最佳設計,使得可在1張信封上貼出從郵資1開始,增量為1的最大連續郵資區間。例如,當n=5和m=4時,面值為(1,3,11,15,32)的5種郵票可以貼出郵資的最大連續郵資區間是1到70。編程任務:對于給定的正整數m和n,計算出郵票面值的最佳設計。【要求】【數據輸入】輸入數據每一行給出2個正

8、整數m和n的值(1=n,m=9),最后以0 0表示文件結束。【數據輸出】對于輸以假定(ai, aj) = 1.輸出包含一個正整數,即為Andy家至少養豬的數目。【樣例輸入】33 15 17 2【樣例輸出】16kitty貓的基因編碼【問題描述】kitty 的基因編碼如下定義:kitty的基因由一串長度2k(k=8)的01序列構成,為了方便研究,需要把,01序列轉換為ABC編碼。用T(s)來表示01序列s的ABC編碼T(s)A(當S全由0組成)T(s)B(當s全由1組成)T(s)C+T(s1)+T(s2)s1,s2為把s等分為2個長度相等的子串比如 T(00)=A T(00001111)=CAB【

9、要求】【數據輸入】一行,長度為2k,為kitty貓的01基因編碼,有多個數據【數據輸出】一行,由ABC構成的ABC編碼【樣例輸出】01001011【樣例輸出】CCCABACCBAB取石子游戲【問題描述】有兩堆石子,數量任意,可以不同。游戲開始由兩個人輪流取石子。游戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在兩堆中同時取走相同數量的石子。最后把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都采取最好的策略,問最后你是勝者還是敗者。【要求】【數據輸入】輸入包含若干行,表示若干種石子的初始情況,其中每一行包含兩個非負整數a和b,表示兩

10、堆石子的數目,a和b都不大于1,000,000,000。【數據輸出】輸出對應也有若干行,每行包含一個數字1或0,如果最后你是勝者,則為1,反之,則為0。【樣例輸入】2 18 44 7【樣例輸出】010勇氣的挑戰【問題描述】給定n個點的坐標(x,y,z),且n=50,從點1出發,怎么樣才能走一條路徑,訪問每個點一次且僅一次,使走過的距離和最小?【要求】【數據輸入】多組數據.第1行n,然后n行3個整數坐標【數據輸出】每組一行,代表最小權和【樣例輸入】30 0 01 1 01 -1 0【樣例輸出】3.4統計同成績學生人數Time Limit: 2000/1000 MS (Java/Others) M

11、emory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1608 Accepted Submission(s): 877【問題描述】讀入N名學生的成績,將獲得某一給定分數的學生人數輸出。 【要求】【數據輸入】測試輸入包含若干測試用例,每個測試用例的格式為第1行:N第2行:N名學生的成績,相鄰兩數字用一個空格間隔。第3行:給定分數當讀到N=0時輸入結束。其中N不超過1000,成績分數為(包含)0到100之間的一個整數。 【數據輸出】對每個測試用例,將獲得給定分數的學生人數輸出。 【樣例輸出】380 60 9060285 66056

12、0 75 90 55 75750【樣例輸出】102錢幣兌換問題Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 494 Accepted Submission(s): 247【問題描述】在一個國家僅有1分,2分,3分硬幣,將錢N兌換成硬幣有很多種兌法。請你編程序計算出共有多少種兌法。 【要求】【數據輸入】每行只有一個正整數N,N小于32768。 【數據輸出】對應每個輸入,輸出兌換方法數。 【樣例輸入】293412553【樣例輸出】7188311

13、3137761字串數Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 405 Accepted Submission(s): 90【問題描述】一個A和兩個B一共可以組成三種字符串:ABB,BAB,BBA.給定若趕字母和它們相應的個數,計算一共可以組成多少個不同的字符串. 【要求】【數據輸入】每組測試數據分兩行,第一行為n(1=n=26),表示不同字母的個數,第二行為n個數A1,A2,.,An(1=Ai=12),表示每種字母的個數.測試數據以n=

14、0為結束. 【數據輸出】對于每一組測試數據,輸出一個m,表示一共有多少種字符串. 【樣例輸入】21 232 2 20【樣例輸出】390小希的數表Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 201 Accepted Submission(s): 48【問題描述】Gardon 昨天給小希布置了一道作業,即根據一張由不超過5000的N(3=N=100)個正整數組成的數表兩兩相加得到N*(N-1)/2個和,然后再將它們排序。例如,如果數表里含有四

15、個數1,3,4,9,那么正確答案是4,5,7,10,12,13。小希做完作業以后出去玩了一陣,可是下午回家時發現原來的那張數表不見了,好在她做出的答案還在,你能幫助她根據她的答案計算出原來的數表么? 【要求】【數據輸入】包含多組數據,每組數據以一個N開頭,接下來的一行有按照大小順序排列的N*(N-1)/2個數,是小希完成的答案。文件最后以一個0結束。假設輸入保證解的存在性和唯一性。 【數據輸出】對于每組數據,輸出原來的數表。它們也應當是按照順序排列的。 【樣例輸入】44 5 7 10 12 1345 6 7 8 9 100【樣例輸出】1 3 4 92 3 4 6士兵隊列訓練問題Time Lim

16、it: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 462 Accepted Submission(s): 185【問題描述】某部隊進行新兵隊列訓練,將新兵從一開始按順序依次編號,并排成一行橫隊,訓練的規則如下:從頭開始一至二報數,凡報到二的出列,剩下的向小序號方向靠攏,再從頭開始進行一至三報數,凡報到三的出列,剩下的向小序號方向靠攏,繼續從頭開始進行一至二報數。,以后從頭開始輪流進行一至二報數、一至三報數直到剩下的人數不超過三人為止。 【要求】【數據輸入】本題

17、有多個測試數據組,第一行為組數N,接著為N行新兵人數,新兵人數不超過5000。 【數據輸出】共有N行,分別對應輸入的新兵人數,每行輸出剩下的新兵最初的編號,編號之間有一個空格。 【樣例輸入】22040 【樣例輸出】1 7 191 19 37最簡單的計算機Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 287 Accepted Submission(s): 192【問題描述】一個名叫是PigHeadThree的研究組織設計了一臺實驗用的計算機,

18、命名為PpMm。PpMm只能執行簡單的六種命令A,B,C,D,E,F;只有二個內存M1,M2;三個寄存器R1,R2,R3。六種命令的含義如下:命令A:將內存M1的數據裝到寄存器R1中;命令B:將內存M2的數據裝到寄存器R2中;命令C:將寄存器R3的數據裝到內存M1中;命令D:將寄存器R3的數據裝到內存M2中;命令E:將寄存器R1中的數據和寄存器R2中的數據相加,結果放到寄存器R3中;命令F:將寄存器R1中的數據和寄存器R2中的數據相減,結果放到寄存器R3中。你的任務是:設計一個程序模擬PpMm的運行。 【要求】【數據輸入】有若干組,每組有2行,第一行是2個整數,分別表示M1和M2中的初始內容;

19、第二行是一串長度不超過200的由大寫字母A到F組成的命令串,命令串的含義如上所述。 【數據輸出】對應每一組的輸入,輸出只有一行,二個整數,分別表示M1,M2的內容;其中M1和M2之間用逗號隔開。其他說明:R1,R2,R3的初始值為0,所有中間結果都在-231和231之間。 【樣例輸入】100 288ABECED876356 321456ABECAEDBECAF【數據輸出】388,3882717080,1519268愚人節的禮物Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total

20、 Submission(s): 241 Accepted Submission(s): 168【問題描述】四月一日快到了,Vayko想了個愚人的好辦法送禮物。嘿嘿,不要想的太好,這禮物可沒那么簡單,Vayko為了愚人,準備了一堆盒子,其中有一個盒子里面裝了禮物。盒子里面可以再放零個或者多個盒子。假設放禮物的盒子里不再放其他盒子。用()表示一個盒子,B表示禮物,Vayko想讓你幫她算出愚人指數,即最少需要拆多少個盒子才能拿到禮物。 【要求】【數據輸入】本題目包含多組測試,請處理到文件結束。每組測試包含一個長度不大于1000,只包含(,)和B三種字符的字符串,代表Vayko設計的禮物透視圖。你可以

21、假設,每個透視圖畫的都是合法的。 【數據輸出】對于每組測試,請在一行里面輸出愚人指數。 【樣例輸入】(B)()()(B)【樣例輸出】41整數對Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 111 Accepted Submission(s): 29【問題描述】Gardon 和小希玩了一個游戲,Gardon隨便想了一個數A(首位不能為0),把它去掉一個數字以后得到另外一個數B,他把A和B的和N告訴了小希,讓小希猜想他原來想的數字。不過為了公平

22、起見,如果小希回答的數雖然不是A,但同樣能達到那個條件(去掉其中的一個數字得到B,A和B之和是N),一樣算小希勝利。而且小希如果能答出多個符合條件的數字,就可以得到額外的糖果。所以現在小希希望你編寫一個程序,來幫助她找到盡可能多的解。例如,Gardon想的是A=31,B=3 告訴小希N=34,小希除了回答31以外還可以回答27(27+7=34)所以小希可以因此而得到一個額外的糖果。 【要求】【數據輸入】輸入包含多組數據,每組數據一行,包含一個數N(1=N=109),文件以0結尾。 【數據輸出】對于每個輸入的N,輸出所有符合要求的解(按照大小順序排列)如果沒有這樣的解,輸出No solution

23、. 【樣例輸入】34152210【樣例輸出】27 31 32126 136 139 141No solution.寒冰王座Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 875 Accepted Submission(s): 358【問題描述】不死族的巫妖王發工資拉,死亡騎士拿到一張N元的鈔票(記住,只有一張鈔票),為了防止自己在戰斗中頻繁的死掉,他決定給自己買一些道具,于是他來到了地精商店前.死亡騎士:“我要買道具!”地精商人:“我們這里有

24、三種道具,血瓶150塊一個,魔法藥200塊一個,無敵藥水350塊一個。”死亡騎士:“好的,給我一個血瓶。”說完他掏出那張N元的大鈔遞給地精商人.地精商人:“我忘了提醒你了,我們這里沒有找客人錢的習慣的,多的錢我們都當小費收了的,嘿嘿。”死亡騎士:“”死亡騎士想,與其把錢當小費送個他還不如自己多買一點道具,反正以后都要買的,早點買了放在家里也好,但是要盡量少讓他賺小費。現在死亡騎士希望你能幫他計算一下,最少他要給地精商人多少小費。 【要求】【數據輸入】輸入數據的第一行是一個整數T(1=T=100),代表測試數據的數量.然后是T行測試數據,每個測試數據只包含一個正整數N(1=N=10000),N代

25、表死亡騎士手中鈔票的面值.注意:地精商店只有題中描述的三種道具. 【數據輸出】對于每組測試數據,請你輸出死亡騎士最少要浪費多少錢給地精商人作為小費. 【樣例輸入】2900250 【樣例輸出】050覆蓋的面積Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 170 Accepted Submission(s): 60【問題描述】給定平面上若干矩形,求出被這些矩形覆蓋過至少兩次的區域的面積.【要求】【數據輸入】輸入數據的第一行是一個正整數T(1=

26、T=100),代表測試數據的數量.每個測試數據的第一行是一個正整數N(1=N13,12-23,13-12,13-32,23-21, 23-31。注意:文件里只有一個整數N(2N1000)。 【數據輸出】輸出一個整數,為可能的過程的總數除以10007的余數。【樣例輸入】4【樣例輸出】96猴子的爭斗Time limit: 1s Memory limit: 32768K Total Submit : 184 Accepted Submit : 75 【問題描述】從前在一個森林里,有N只好斗的猴子。一開始,他們互不認識。互不認識的猴子間是無法避免爭斗的,而且爭斗只會發生在兩只互不認識的猴子間。決斗結束

27、后,這兩只猴子和他們各自的朋友們通過這場決斗相互間都認識了,爭斗便不會再發生在這一大群猴子中的任兩只。由于爭斗是比較激烈的,所以同一時間內不會有兩場決斗一起發生。經過N-1次決斗后,這N只猴子間相互都認識了,現在問有多少種可能的決斗過程。例如N=3,有6種不同的過程:12-13,12-23,13-12,13-32,23-21, 23-31。【要求】【數據輸入】文件里只有一個整數N(2N1000)。 【數據輸出】輸出一個整數,為可能的過程的總數除以10007的余數。【樣例輸入】4【樣例輸出】96排序Time limit: 10s Memory limit: 32768K Total Submit

28、 : 70 Accepted Submit : 2 【問題描述】通常我們對一個長度為n(n24)的整數數列進行排序操作,其實就是講他們按照從小到大的順序重整。一般情況下我們可以比較任意兩個數之間的大小并交換他們的位置,但這里我們限制只能數列的某一個前綴序列翻轉,除此之外的任何操作都是不允許的。更精確地說,假設數列a1,a2,an,一個合法的操作是把數列變為ak,ak-1,a2, a1, ak+1, ak+2, an,其中1kn。例如:數列3 2 1 4,可能的操作有三種,分別是2 3 1 4、1 2 3 4、4 1 2 3。你任務是求出一個序列用上面的方法排序至少需要多少步。【要求】【數據輸入

29、】輸入文件有兩行:第一行是一個整數n,表示數列的長度。第二行有n個整數,表示待排序的數列,每個整數的絕對值不大于32767。【數據輸出】輸出文件有一行是一個整數s,表示完成排序所需的最少步數。【樣例輸入】43 2 1 4【樣例輸出】1提示:只需要一步就可以完成排序:3 2 1 4 1 2 3 4。選址Time limit: 10s Memory limit: 32768K Total Submit : 100 Accepted Submit : 13 【問題描述】很久以前,在世界的某處有一個形狀為凸多邊形的小島,島上的居民們決定建一個祭壇,居民們認為祭壇的位置離島的頂點處越遠越好。你的任務是求

30、凸多邊形內一點,使其與各頂點的距離中最短的距離最遠,點在邊上也可以。這樣的點可能有多個,你只需輸出這些點與各頂點的最短距離。【要求】【數據輸入】第一行是一個整數N(3N100)。接下來N行按逆時針順序給出每個頂點的坐標,每行包含2個實數,表示頂點的橫坐標和縱坐標(坐標絕對值小于10000)。【數據輸出】輸出一個實數,表示凸多邊形內一點與各頂點的距離中最短的距離的最大值。【樣例輸入】30 29 07 7【樣例輸出】4.893過河Time limit: 1s Memory limit: 32768K Total Submit : 518 Accepted Submit : 65 【問題描述】在河上

31、有一座獨木橋,一只青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由于橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點:0,1,L(其中L是橋的長度)。坐標為0的點表示橋的起點,坐標為L的點表示橋的終點。青蛙從橋的起點開始,不停的向終點方向跳躍。一次跳躍的距離是S到T之間的任意正整數(包括S,T)。當青蛙跳到或跳過坐標為L的點時,就算青蛙已經跳出了獨木橋。題目給出獨木橋的長度L,青蛙跳躍的距離范圍S,T,橋上石子的位置。你的任務是確定青蛙要想過河,最少需要踩到的石子數。【要求】【數據輸入】輸入的第一行有一個正整數L

32、(1 = L = 109),表示獨木橋的長度。第二行有三個正整數S,T,M,分別表示青蛙一次跳躍的最小距離,最大距離,及橋上石子的個數,其中1 = S = T = 10,1 = M = 100。第三行有M個不同的正整數分別表示這M個石子在數軸上的位置(數據保證橋的起點和終點處沒有石子)。所有相鄰的整數之間用一個空格隔開。 【數據輸出】輸出只包括一個整數,表示青蛙過河最少需要踩到的石子數。【樣例輸入】102 3 52 3 5 6 7【樣例輸出】2數字游戲Time limit: 1s Memory limit: 32768K Total Submit : 323 Accepted Submit :

33、 89 【問題描述】小W發明了一個游戲,他在黑板上寫出了一行數字a1,a2,.an,然后給你m個回合的機會,每回合你可以從中選擇一個數擦去它,接著剩下來的每個數字ai都要遞減一個值bi。如此重復m個回合,所有你擦去的數字之和就是你所得到的分數。 小W和他的好朋友小Y玩了這個游戲,可是他發現,對于每個給出的an和bn序列,小Y的得分總是比他高,所以他就很不服氣。于是他想讓你幫他算算,對于每個an和bn序列,可以得到的最大得分是多少。這樣他就知道有沒有可能超過小Y的得分。 【要求】【數據輸入】第一行,一個整數n(1=n=200),表示數字的個數。第二行,一個整數m(1=m=n),表示回合數。接下來

34、一行有n個不超過10000的正整數,a1,a2an,表示原始數字,最后一行有n個不超過500的正整數,b1,b2.bn,表示每回合每個數字遞減的值【數據輸出】一個整數,表示最大可能的得分 【樣例輸入】3 310 20 304 5 6【樣例輸出】47速配游戲Time limit: 5s Memory limit: 32768K Total Submit : 295 Accepted Submit : 209 【問題描述】有這么一個速配電視節目。N位男士和N位女士要在攝像機前選出他們合適的伴侶。每位女士按照其對每位男士作為配偶的偏愛程度給每位男士排名次,每位男士也按照其對每位女士作為配偶的偏愛程度

35、給每位女士排名次。這些名次不允許并列。然后每位男士將向心儀的對象求婚,經過殘酷的競爭之后各自找到適合的伴侶。最開始的時候每位男士都還沒有被任何一位女士拒絕。求婚環節會經過很多輪進行,每一輪:(1) 每位男士向還沒有拒絕過自己的女士中選出自己認為最理想的一個,并向她求婚(2) 每位女士在所有這一輪中向她求婚的男士中選出自己認為最理想的一個,并不答應,也不拒絕。她把其余向她求婚的男士都婉言拒絕掉。經過了若干輪求婚之后,在某一輪,幸運的事情發生了:所有的女士都恰好有一個求婚者,所有的男士都找到一個心儀的對象。主持人將繼續指出這個配對方式的神奇之處:沒有任意的兩個配對,比方說男士A和女士a配對,男士B

36、和女士b配對,使得在A心目中b較a更理想,而且在b心目中A較B更理想(這樣A和b就會私奔)。因此,主持人總結說,這個配對是非常合理的。(他知道,這種情況是一定會發生的。)主持人在節目之前已經知道男士和女士之間的偏愛情況,他想預先知道最后的匹配結果是怎么樣的,你能幫幫他嗎?【要求】【數據輸入】第一行包括一個數字N(1=N=1000)以下N*2行,每行有N個數字。第i+1行(1=i=N)表示編號為i的男士對女士們的排序(從最喜歡的到最不喜歡的)。第N+j+1行(1=j=N)表示編號為j的女士對男士們的排序(同樣從最喜歡的到最不喜歡的)。【數據輸出】N行,每行包括一個數字。第i行的數字表示與編號為i

37、的男士匹配的女士的編號。【樣例輸入】31 2 32 3 12 1 33 2 12 3 12 3 1【樣例輸出】321 3n+1數鏈問題Time limit: 1s Memory limit: 32768K Total Submit : 471 Accepted Submit : 325 【問題描述】在計算機科學上,有很多類問題是無法解決的,我們稱之為不可解決問題。然而,在很多情況我們并不知道哪一類問題可以解決,那一類問題不可解決。現在我們就有這樣一個問題,問題如下: 1. 輸入一個正整數n;2. 把n顯示出來;3. 如果n=1則結束;4. 如果n是奇數則n變為 ,否則n變為n/2;5. 轉入第

38、2步。例如對于輸入的正整數22,應該有如下數列被顯示出來:22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 我們推測:對于任意一個正整數,經過以上算法最終會推到1。盡管這個算法很簡單,但我們仍然無法確定我們的推斷是否正確。不過好在我們有計算機,我們驗證了對于小于1,000,000的正整數都滿足以上推斷。對于給定的正整數n,我們把顯示出來的數的個數定義為n的鏈長,例如22的鏈長為16。 你的任務是編寫一個程序,對于任意一對正整數i和j,給出i、j之間的最長鏈長,當然這個最長鏈長是由i、j之間的其中一個正整數產生的。我們這里的i、j之間即包括i也包括j。【要求】

39、【數據輸入】輸入文件只有一行,即為正整數i和j,i和j之間以一個空格隔開。0 i j 10,000。 【數據輸出】文件只能有一行,即為i、j之間的最長鏈長。【樣例輸入】1 10【樣例輸出】20數制轉換Time limit: 1s Memory limit: 32768K Total Submit : 479 Accepted Submit : 190 【問題描述】有一種數制的基數是3,權值可以取-1,0,1,并分別用符號-,0,1表示,如這種數制的101表示十進制數的10,即1*(32)+0*(31)+1*(30)=10,又如這種數制的-0 表示十進制數的-3,即-1*(31)+0*(30)=

40、-3。編程要求把給定的有符號整數轉換為新數制的數,該數的前面不能有多余的0,如10的新數制表示是101,則不要輸出成0101。【要求】【數據輸入】文件有一行或多行,每行有一個整數N (-2,147,483,647N2,147,483,647),整數內不會有其他分隔符。【數據輸出】對輸入文件的每一行輸出一行,該行是輸入行的整數的新數制表示,不能有多余空行,每行之前不能有前導空格。【樣例輸入】10-3【樣例輸出】101-0數列Time limit: 1s Memory limit: 32768K Total Submit : 415 Accepted Submit : 226 【問題描述】給定一個

41、正整數k(3k15),把所有k的方冪及所有有限個互不相等的k的方冪之和構成一個遞增的序列,例如,當k=3時,這個序列是: 1,3,4,9,10,12,13, (該序列實際上就是:30,31,30+31,32,30+32,31+32,30+31+32,) 請你求出這個序列的第N項的值(用10進制數表示)。 例如,對于k=3,N=100,正確答案應該是981。【要求】【數據輸入】輸入包含多個測試數據。每個測試數據只有1行,為2個正整數,用一個空格隔開:k N(k、N的含義與上述的問題描述一致,且3k15,10N1000)【數據輸出】對于每個測試數據輸出一個正整數(在所有的測試數據中,結果均不超過2

42、.1*109)。【樣例輸入】3 1003 100【樣例輸出】9819812k進制數Time limit: 1s Memory limit: 32768K Total Submit : 110 Accepted Submit : 28 【問題描述】設r是個2k 進制數,并滿足以下條件: (1)r至少是個2位的2k 進制數。 (2)作為2k 進制數,除最后一位外,r的每一位嚴格小于它右邊相鄰的那一位。 (3)將r轉換為2進制數q后,則q的總位數不超過w。 在這里,正整數k(1k9)和w(kw30000)是事先給定的。 問:滿足上述條件的不同的r共有多少個? 我們再從另一角度作些解釋:設S是長度為w

43、 的01字符串(即字符串S由w個“0”或“1”組成),S對應于上述條件(3)中的q。將S從右起劃分為若干個長度為k 的段,每段對應一位2k進制的數,如果S至少可分成2段,則S所對應的二進制數又可以轉換為上述的2k 進制數r。 例:設k=3,w=7。則r是個八進制數(23=8)。由于w=7,長度為7的01字符串按3位一段分,可分為3段(即1,3,3,左邊第一段只有一個二進制位),則滿足條件的八進制數有: 2位數:高位為1:6個(即12,13,14,15,16,17),高位為2:5個,高位為6:1個(即67)。共6+5+1=21個。 3位數:高位只能是1,第2位為2:5個(即123,124,125

44、,126,127),第2位為3:4個,第2位為6:1個(即167)。共5+4+1=15個。 所以,滿足要求的r共有36個。【要求】【數據輸入】輸入包含多個測試數據,每個測試數據只有1行,為兩個正整數,用一個空格隔開:k W【數據輸出】對于每個測試數據,輸出一行,是一個正整數,為所求的計算結果,即滿足條件的不同的r的個數(用十進制數表示),要求最高位不得為0,各數字之間不得插入數字以外的其他字符(例如空格、換行符、逗號等)。(提示:作為結果的正整數可能很大,但不會超過200位)【樣例輸入】3 73 7【樣例輸出】3636獎學金Time limit: 1s Memory limit: 32768K

45、 Total Submit : 363 Accepted Submit : 218 【問題描述】某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績:語文、數學、英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那么規定學號小的同學排在前面,這樣,每個學生的排序是唯一確定的。任務:先根據輸入的3門課的成績計算總分,然后按上述規則排序,最后按排名順序輸出前5名學生的學號和總分。注意,在前5名同學中,每個人的獎學金都不相同,因此,你必須嚴格按上述規則排序。例如,在某個正確答案中,如

46、果前兩行的輸出數據(每行輸出兩個數:學號、總分)是:7 2795 279這兩行數據的含義是:總分最高的兩個同學的學號依次是7號、5號。這兩名同學的總分都是279(總分等于輸入的語文、數學、英語三科成績之和),但學號為7的學生語文成績更高一些。如果你的前兩名的輸出數據是:5 2797 279則按輸出錯誤處理,不能得分。【要求】【數據輸入】輸入包含多組測試數據,每個測試數據有n+1行。第1行為一個正整數n,表示該校參加評選的學生人數。第2到n+1行,每行有3個用空格隔開的數字,每個數字都在0到100之間。第j行的3個數字依次表示學號為j-1的學生的語文、數學、英語的成績。每個學生的學號按照輸入順序

47、編號為1n(恰好是輸入數據的行號減1)。所給的數據都是正確的,不必檢驗。 【數據輸出】對于每個測試數據輸出5行,每行是兩個用空格隔開的正整數, 依次表示前5名學生的學號和總分。兩個相鄰測試數據間用一個空行隔開。【樣例輸入】690 67 8087 66 9178 89 9188 99 7767 89 6478 89 98880 89 8988 98 7890 67 8087 66 9178 89 9188 99 7767 89 6478 89 98【樣例輸出】6 2654 2643 2582 2441 2378 2652 2646 2641 2585 258紀念品分組Time limit: 1s

48、 Memory limit: 32768K Total Submit : 92 Accepted Submit : 51 【問題描述】元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得參加晚會的同學所獲得的紀念品價值相對均衡,他要把購來的紀念品根據價格進行分組,但每組最多只能包括兩件紀念品,并且每組紀念品的價格之和不能超過一個給定的整數。為了保證在盡量短的時間內發完所有紀念品,樂樂希望分組的數目最少。你的任務是寫一個程序,找出所有分組方案中分組數最少的一種,輸出最少的分組數目。【要求】【數據輸入】 輸入包含多組測試數據,每個測試數據包含n+2行:第1行包括一個整數w,為每組紀念品價

49、格之和的上限。第2行為一個整數n,表示購來的紀念品的總件數。第3n+2行每行包含一個正整數pi (5 = pi = w),表示所對應紀念品的價格。1 = n = 30000, 80 = w = 200 【數據輸出】對每個測試數據,輸出一行,包含一個整數,即最少的分組數目。相鄰兩個測試數據間用一個空行隔開。【樣例輸入】1009902020305060708090【樣例輸出】6統計數字Time limit: 1s Memory limit: 32768K Total Submit : 165 Accepted Submit : 58 【問題描述】某次科研調查時得到了n個自然數,每個數均不超過150

50、0000000(1.5*109)。已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,并按照自然數從小到大的順序輸出統計結果。【要求】【數據輸入】包含多個測試數據,每個包含n+1行:第1行是整數n,表示自然數的個數。第2n+1行每行一個自然數。1=n=200000,每個數均不超過1 500 000 000(1.5*109) 【數據輸出】對每個測試數據輸出m行(m為n個自然數中不相同數的個數),按照自然數從小到大的順序輸出。每行輸出兩個整數,分別是自然數和該數出現的次數,其間用一個空格隔開。相鄰兩個測試數據間用一個空行隔開。【樣例輸入】8242451002100【樣例輸出】2

51、 34 25 1100 2矩陣取數游戲Time limit: 1s Memory limit: 32768K Total Submit : 150 Accepted Submit : 27 【問題描述】帥帥經常跟同學玩一個矩陣取數游戲:對于一個給定的n*m的矩陣,矩陣中的每個元素aij均為非負整數。游戲規則如下:1. 每次取數時須從每行各取走一個元素,共n個。m次后取完矩陣所有元素;2. 每次取走的各個元素只能是該元素所在行的行首或行尾;3. 每次取數都有一個得分值,為每行取數的得分之和,每行取數的得分 = 被取走的元素值*2i,其中i表示第i次取數(從1開始編號);4. 游戲結束總得分為m次取數得分之

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論