C++編程試題:計(jì)算機(jī)學(xué)科-夏令營上機(jī)考試題解(2)
作為一個(gè)編程學(xué)習(xí)者,自己多多練習(xí)刷刷題總是沒錯的。

A:歐元支付
動態(tài)規(guī)劃
全局題號254 提交次數(shù)90 嘗試人數(shù)35 通過人數(shù)17
總時(shí)間限制:
1000毫秒
內(nèi)存限制:
65536kB
描述
2002 年 1 月 1 日,荷蘭和其他幾個(gè)歐洲國家放棄了本國貨幣,轉(zhuǎn)而使用歐元。這改變了支付的便利性,而不僅僅是國際。
在 1 月 1 日之前購買 68 荷蘭盾的書的學(xué)生可以用一張 50 荷蘭盾的鈔票和兩張 10 荷蘭盾的鈔票支付這本書,收到兩荷蘭盾的零錢。簡而言之:50+10+10-1-1=68。其他支付方式有:50+25-5-1-1,或100-25-5-1-1。無論哪種方式,支付過程中總是涉及5個(gè)單位(紙幣或硬幣),它
不能用少于 5 個(gè)單位完成。
現(xiàn)在買 68 歐元的書更容易了:50+20-2 = 68,所以只涉及 3 個(gè)單位。這不是巧合;在許多其他情況下,用歐元支付比用荷蘭盾支付更有效。平均而言,歐元更有效。當(dāng)然,這與歐元的價(jià)值無關(guān),而是與選擇的單位有關(guān)。荷蘭盾的單位過去是:1、2.5、5、10、25、50,而歐元的單位是:1、2、5、10、20、50。
對于這個(gè)問題,我們將自己限制為最多 100 美分。歐元有價(jià)值 1、2、5、10、20、50 歐分的硬幣。在支付 [1, 100] 歐分范圍內(nèi)的任意金額時(shí),平均涉及 2.96 個(gè)硬幣,作為支付或找零。從這個(gè)意義上說,歐元系列并不是最佳的。對于硬幣 1、24、34、39、46、50,可以使用兩個(gè)硬幣支付 68 美分。支付 [1, 100] 范圍內(nèi)的金額所涉及的平均硬幣數(shù)量為 2.52。
然而,后一個(gè)系列的計(jì)算更為復(fù)雜。也就是說,心算。這些計(jì)算可以很容易地在任何手機(jī)中編程,現(xiàn)在幾乎每個(gè)人都隨身攜帶。為未來做準(zhǔn)備,歐洲中央銀行的一個(gè)委員會正在研究硬幣系列的效率,以找到最高 100 歐分的最有效系列。他們需要你的幫助。
編寫一個(gè)程序,給定一系列硬幣,計(jì)算支付任何金額(包括 100 美分)所需的平均和最大硬幣數(shù)量。您可以假設(shè)所涉及的雙方都有足夠數(shù)量的任何硬幣可供使用。
輸入
輸入的第一行包含測試用例的數(shù)量。每個(gè)測試用例由 6 個(gè)不同的正整數(shù)在一行中描述:硬幣的值,按升序排列。第一個(gè)數(shù)字始終為 1。最后一個(gè)數(shù)字小于 100。
輸出
對于每個(gè)測試用例,輸出是一行,首先包含平均值,然后是支付范圍 [1, 100] 中涉及的最大硬幣數(shù)。這些值由空格分隔。如示例所示,平均值應(yīng)始終包含小數(shù)點(diǎn)后兩位數(shù)。最大值始終是整數(shù)。
樣例輸入

樣例輸出

C++實(shí)現(xiàn)

B:判決素?cái)?shù)個(gè)數(shù)
全局題號2178 提交次數(shù)95 嘗試人數(shù)32 通過人數(shù)28
總時(shí)間限制:
1000ms
內(nèi)存限制:
65536kB
描述
輸入兩個(gè)整數(shù)X和Y,輸出兩者之間的素?cái)?shù)個(gè)數(shù)(包括X和Y)。
輸入
兩個(gè)整數(shù)X和Y(1 <= X,Y <= 105)。
輸出
輸出一個(gè)整數(shù),表示X,Y之間的素?cái)?shù)個(gè)數(shù)(包括X和Y)。
樣例輸入

樣例輸出

C++代碼

C:編碼字符串
全局題號12556 提交次數(shù)56 嘗試人數(shù)32 通過人數(shù)32
總時(shí)間限制:
1000ms
內(nèi)存限制:
65536kB
描述
在數(shù)據(jù)壓縮中,一個(gè)常用的方法是行程長度編碼壓縮。對于一個(gè)待壓縮的字符串,我們可以依次記錄每個(gè)字符及重復(fù)的次數(shù)。例如,待壓縮的字符串為”aaabbbbcbb”,壓縮結(jié)果為(a,3)(b,4)(c,1)(b,2)。這種壓縮對于相鄰數(shù)據(jù)重復(fù)較多的情況有效,如果重復(fù)狀況較少,則壓縮的效率較低。
現(xiàn)要求根據(jù)輸入的字符串,首先將字符串中所有大寫字母轉(zhuǎn)化為小寫字母,然后將字符串進(jìn)行壓縮。
輸入
一個(gè)字符串,長度大于0,且不超過1000,全部由大寫或小寫字母組成。
輸出
輸出為編碼之后的字符串,形式為:(a,3)(b,4)(c,1)(d,2),即每對括號內(nèi)分別為小寫字符及重復(fù)的次數(shù),不含任何空格。
樣例輸入

樣例輸出

C++實(shí)現(xiàn)

D:島嶼周長
全局題號12558 提交次數(shù)38 嘗試人數(shù)28 通過人數(shù)28
總時(shí)間限制:
1000ms
內(nèi)存限制:
65536kB
描述
用一個(gè)n*m的二維數(shù)組表示地圖,1表示陸地,0代表海水,每一格都表示一個(gè)1*1的區(qū)域。地圖中的格子只能橫向或者縱向連接(不能對角連接),連接在一起的陸地稱作島嶼,同時(shí)整個(gè)地圖都被海水圍繞。假設(shè)給出的地圖中只會有一個(gè)島嶼,并且島嶼中不會有湖(即不會有水被陸地包圍的情況出現(xiàn))。請判斷所給定的二維地圖中島嶼的周長。
輸入
第一行為n和m,表示地圖的大小(1<=n<=100, 1<=m<=100)。接下來n行,每行有m個(gè)數(shù),分別描述每一格的數(shù)值。數(shù)值之間均用空格隔開。
輸出
只有一行,即島嶼的周長(正整數(shù))。
樣例輸入

樣例輸出

C++實(shí)現(xiàn)

為了幫助大家,輕松,高效學(xué)習(xí)C語言/C++,給大家分享我收集的資源,從最零基礎(chǔ)開始的,幫助大家在學(xué)習(xí)C語言的道路上披荊斬棘!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!大家也要把握住大學(xué)的時(shí)光,抓住成長的每一次機(jī)會哦~
編程學(xué)習(xí)視頻分享:

粉絲編程學(xué)習(xí)交流:
