HNUCM 2018級《算法分析與設計》練習一題解
A-無法重啓的2020
題意:
給定一個四位數,判斷是否符合ABAB類型
是輸出Yes,否輸出No
題解:
需要注意的坑點是第一個數和第二個數不能相等,否則就是AAAA類型了
B-XP的衆數
題意:
多組輸入,每組給定數組大小,後面緊跟着該數組的值,求該數組衆數的個數
題解:
1.如果會C++,直接用map,會發現非常水
2.但是不會也沒關係,可以先對數組a[]排序,然後再進行遍歷,可以再開一個數組b[],用來存在遍歷時每個數出現的次數,然後再對新數組遍歷一次,找出出現最多的次數;然後通過遍歷一一比較即可得出答案(當然也可以對數組b[]由大到小排序,然後再遍歷遇到與前一個不等時,直接跳出循環)
C-XP的電燈
題意:
k位同學,n盞燈,起初所有燈都是熄滅的;第i位同學會按一次i的倍數的燈(也就是說當熄滅時會打開,打開狀態是會關閉);求最終有多少盞燈是亮着的
題解:
直接可以用數組模擬,兩重循環即可解決,第一重循環對學生,第二重循環對燈
D-飢餓的XP
題意:
首先給出n,m;n表示xp的速度,m表示食物供給點的數量
然後給出xp的位置(x,y)
緊接着給出m個食物供給點的位置(xi,yi)
求到達最近食物點的時間
題解:
1、需要注意的是:這題需要多組輸入,題目的確沒講太清楚
2、然後就只要注意下防止精度丟失就可以了
E-Yftc的字符串轉換
1、多組輸入
2、直接對每個字符串遍歷一下,然後大寫轉小寫;小寫轉大寫即可
F-進制轉換:十進制轉二進制
題意:
多組輸入,給出一個10進制數,求它的二進制表示方法
題解:
直接用數組存即可,當然防止暴內存,可以用字符數組存
除k取餘即可
G-圓柱的體積
題意:
多組輸入
每次輸入圓柱體的底面半徑和高
題解:
就只要注意一下不需要四捨五入
由於最後保留三位小數可以通過先*10000,得到數x,然後強制類型轉化爲int類型,接着對x%10,即:x=x-x%10; 然後再/(10000*1.0)即可
(當然其他操作也可以解決)
H-數素數
題意:
給出m,n;求第m個素數到第n個素數
其中每10個素數爲一行(行末不能有空格)
題解:
1、可以用素數篩提前打表,素數篩的話可以使用暴力打表;
當然爲了顯得高級點,可以用數論中的埃氏篩O(nlogn)和歐拉篩O(n)
可以參考這篇博客:
素數篩(埃氏篩+歐拉篩)
2、當然也可以直接暴力,因爲數據比較弱,這樣也是可以過的
I-平方與立方
題意:
t組數據,每組數據給出n,表示x,y能取到的最大值;
求滿足xx=yy*y的x的個數
題解:
由於n<=1000
於是可以直接用兩重循環即可,一層對x,一層對y
J-5x+y
題意:
t組數據,每組數據給出n,求在(0,n]中,滿足5*x+y=n的二元組個數
題解:
同樣直接兩重循環即可