程設(shè)人生訓(xùn)練二
題目A

題目分析
????利用循環(huán)累乘一下,如果當(dāng)前乘積超過1e9則輸出-1,并且return 0;(結(jié)束程序,降低時(shí)間復(fù)雜度),否則繼續(xù)計(jì)算,然后最后輸出結(jié)果。需要注意的是我們累乘計(jì)數(shù)器初始化為1,累加計(jì)數(shù)器初始化為0。
代碼展示

題目B:

題目分析:
????????我們需要計(jì)算[l,r]內(nèi)的數(shù)字除以x并向下取整的最大公約數(shù),首先這是一道數(shù)學(xué)題目,連續(xù)的兩個(gè)自然一定互質(zhì)(最大公約數(shù)為1),則我們可以進(jìn)行判斷,如果L/X==R/X,則說(shuō)明是gcd(L/X,L/X,....,L/X),最大公約數(shù)當(dāng)然是L/X,否則一定包含連續(xù)的自然數(shù),則最大公約數(shù)為1,同時(shí)代碼展示有g(shù)cd函數(shù)的最簡(jiǎn)潔寫法,希望大家記住,口訣是:BBABA。
代碼展示:

題目C:

題目分析:
????????這是一道排序算法的經(jīng)典模板題,是大家必須要掌握的,我們發(fā)現(xiàn),題目要求數(shù)據(jù)進(jìn)行排序和去重兩個(gè)任務(wù),我們?cè)儆^察數(shù)據(jù)范圍,發(fā)現(xiàn)數(shù)值較小,最大數(shù)字不超過30000,我們可以利用桶排序進(jìn)行解決問題,桶排序顧名思義,就是假設(shè)有1-N個(gè)桶,每個(gè)桶可以存儲(chǔ)一個(gè)數(shù)據(jù),先初始化為0,我們每讀入一個(gè)數(shù)據(jù)x,我們讓a[x]++,表示數(shù)字x出現(xiàn)次數(shù)+1,這樣子我們就可以同時(shí)去重和排序,局限性:數(shù)值范圍小,不是數(shù)據(jù)范圍小。
代碼展示:

題目D:

題目分析:
????????這是一道背包的題目,是一道背包模板題,根據(jù)題目大意我們可以知道,每個(gè)物品只能使用一次,唯一價(jià)值,唯一消耗,是典型01背包問題。先利用背包進(jìn)行預(yù)處理出體力為x是最多能運(yùn)輸?shù)氖瘔K體積f[x],這樣子我們就可以再循環(huán)找到最小可以運(yùn)輸v體積的體力f[i],剩余體力就是(c-i)

01背包模板
????? ??
