CCF NOI 1034 鈔票兌換

2021-08-14 09:24:06 字數 1030 閱讀 8057

題目描述

將任意給定的整百元鈔票,兌換成10元、20元、50元小鈔票形式。輸出兌換方案總數。

輸入 輸入需要兌換的鈔票總數n。

輸出 輸出方案總數。

樣例輸入

100樣例輸出

10

我們首先想到的就是暴力列舉法,但是,在oj上執行超時了,所以,我們要用數學方法去優化一下。

源**:

時間複雜度過大,大資料會超時

#include 

using

namespace

std;

int main()

cout

《這是乙個組合問題,可以用窮舉法來解決。

根據輸入的n,可以算出50元鈔票的最多張數,然後假設50元鈔票的張數為i,計算所有的組合。然而如果全部都用試探法去計算,在 100<=n<=1000000這種資料範圍內,則會出現超時的情況。(只能得80分)

要想ac得用數學的方法。其實,假定50元的鈔票有i張,那麼這種情況下的方案數就能算出來了。

例如n=100

50元 有3種情況

(1)0張,則把剩餘的錢(100元)換算成20元,可以有5張(即20,20,20,20,20,此為1種方案),每個20元都可以用2張10元來代替,這樣5張20元,就可以有5次兌換成10元的機會,即由此產生5種兌換方案。這樣,50元為0張時,兌換的方案數就是5+1;

(2)1張,則把剩餘的錢(50元)換算成20元,可以有2張(即50,20,20,10,此為1種方案),每個20元都可以用2張10元來代替,這樣2張20元,就可以有2次兌換成10元的機會,即由此產生5種兌換方案。這樣,50元為0張時,兌換的方案數就是2+1;

(3)2張,則把剩餘的錢(0元)換算成20元,可以有0張(即50,50,此為1種方案)

#include

using

namespace

std;

int main()

cout

0;}

CCF NOI1012 變換密碼

問題鏈結 ccf noi1012 變換密碼 時間限制 1000 ms 空間限制 262144 kb 題目描述 一密碼變換規則如下 乙個正整數對應乙個字元 如果該數模123的值在97 122範圍,變換為ascii為該餘數對應的小寫字元 如果變換不了小寫字元,將該數模91,若餘數在65 90範圍,變換為...

CCF NOI1016 計算天數

問題鏈結 ccf noi1016 計算天數 時間限制 1000 ms 空間限制 262144 kb 題目描述 輸入年份與月份,求該月共有多少天。輸入 輸入兩個空格隔開的正整數year和month,分別表示年份和月份。輸出 輸出對應year這一年month這個月的天數。樣例輸入 2000 2 樣例輸出...

CCF NOI 1044 最近元素

題目描述 在乙個非降序列中,查詢與給定值最接近的元素。輸入 第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢問的給定值個數。1 m 10000。接下來m行,每行乙個整數...