簡單題目練習一,題解(C++版)
題目連結
題解
坑
- 不存在的
題解
hdu-2011 多項式求和
題意很明確,公式已經給出了
注意:
- 正負交替,這裡使用flag *= -1;
的方法
- 在進行運算的時候,如果使用的是int
型別,如需要轉換為double
型別
- 函式型別為double
hdu-2005 第幾天?
分析題目,計算出該日期是該年的第幾天。
首先,每個月份的天數需要知道,2月是需要區分的,需要加上平年閏年的判斷,根據年來改變2月的天數。
其次,假如日期為2006/3/12
那麼,3月的天數是不需要的,直接1月+2月+12即可
注意:
- 閏年的判斷
- 2月隨時年德變化而變化
- 把每個月的天數初始化比較簡單
hdu-2026 首字母變大寫
不知道有沒有坑,但是不能沒有防坑的意識。
分析題目,輸入一個英文句子,將每個單詞的第一個字母改成大寫字母。
如果是一個單詞的話,開始字母前一定有空格(除首單詞)
注意:
- 可能單詞之間不只是一個空格,要防止這個
- 還有隻有一個單詞的樣例
- 首單詞要單獨處理
- 使用gets()
方法可以排除空格的影響
hdu-2041 超級樓梯
可以理解為是一個遞推,也可以用dfs思想
分析題目,兩種走法,一共n階臺階,使用陣列的方法儲存走到當前階的不同走法,例如a[2]=1 a[3]=2
代表走到第2階一共1中方法,走到3階一共2種走法
那麼a[4]呢,它只能從2或3階臺階走上去,所以a[4]=a[3]+a[2]
a[n]=a[n-1]+a[n-2]
注意:
- 打表計算不容易超時(先把4-40階臺階所有的走法都算出來,根據輸入的臺階數直接輸出結果)
- 有想法的可以用dfs方法寫寫試試
hdu-2089 不要62
和上一題一樣需要打表
題目分析,要檢測有沒有62和4,那麼換成字串,只用內建函式就可以直接檢測有沒有,首先計算出1000005以內的數字,如果n有4或62,那麼s[n]=0,反之s[n]=1,所以給出區間就可以直接把m到n的s[]和加出來就是答案了
注意:
- 多組輸入
- 只用strstr函式,itoa函式(不知道是什麼自己查)
hdu-1715 大斐波數
題目分析,到了F題就不可能是簡單題了,肯定有坑,想想1000位的斐波那契數,肯定很大(幾百位),long long肯定會爆,乘不下,那麼自己構建一個數組,每一個代表每一位,a[0]代表個位,a[1]代表十位,為啥是從做開始數位遞增,寫寫就知道了,這樣寫好寫,剩下的就是模擬加法,有進位
注意:
- 進位可能比原來的數字更長
- 需要打表,用一個二維陣列,第一個下表表示輸入的位數,第二個下表各個位上的陣列
- 輸出的時候需要把數字倒過來,即陣列倒著輸出,要把多餘的0過濾
- 注意進位
- 需要初始化前面兩個數字
hdu-1716 排列2
全排列,去重,dfs,排序
題目分析,從小到大的順序輸出所有能由這四張卡片組成的4位數,要求很簡單,dfs的排序如果輸入的時候是從小到大的,那麼輸出的就是從小到大的,這裡使用了函式來全排列,如果不會dfs最好自己寫,根據寒假培訓的時候的例子
注意:
- 排除0開頭的組合
- 什麼時候需要多加一個換行
- 輸出的時候需要根據情況判斷是不是輸出,輸出的時機
hdu-1718 Rank
雖然是英文題,但是很簡單
這個題目的意思是問該學號在考試中獲得第幾名,當分數相同時並列
把學號當做陣列輸入即可,不長,但是需要用long long
,這裡採用的是倒序,用100減去分數,越小的分數越高,所以只需要一個數組記錄人數,下表為1-100,記錄分數,值為人數,只需要把此人的前的a陣列和加起來,然後加1就是此人的排名
注意:
- 用long long
- 記錄這個人的學號
- 排名需要到自己,前面人數加1
那啥,寫java版本的不用謝,記得一箱辣條。