Codeforces 996A Hit the Lottery 中彩券

難易度 : 800

英文原文如下

Allen has a LOT of money. He has n dollars in the bank. For security reasons, he wants to withdraw it in cash (we will not disclose the reasons here). The denominations for dollar bills are 151020100. What is the minimum number of bills Allen could receive after withdrawing his entire balance?

中文翻譯

Allen 有很多錢,他在銀行存有 n 元。出於安全的考慮,他決定將它們用現金提領出來(我們不會在這裡揭露原因)。現金的面額有 151020100 這5種。 在提取他所有的剩餘金額後,Allen能收到最少張的鈔票數是多少?

輸入

The first and only line of input contains a single integer n (1≤≤109).

第一行也是唯一的一行輸入包含了一個整數 n (1≤≤109)

輸出

Output the minimum number of bills that Allen could receive.

輸出Allen可以拿到最少的鈔票張數。

範例

輸入125
輸出3
輸入43
輸出5
輸入1000000000
輸出10000000

筆記

In the first sample case, Allen can withdraw this with a 100 dollar bill, a 20 dollar bill, and a 5 dollar bill. There is no way for Allen to receive 125 dollars in one or two bills.

In the second sample case, Allen can withdraw two 20 dollar bills and three 1 dollar bills.

In the third sample case, Allen can withdraw 10000000 (ten million!) 100 dollar bills.

在第一個例子中,Allen提領了 1張100塊、1張20塊以及1張5塊。 那邊是沒有其他辦法可以讓他用更少張鈔票領出相同金額的。

在第二個例子中,Allen 提領了 2張20塊以及3張1塊。

在第三個例子中,Allend可以提領 1千萬張100塊鈔票。


解題思路

當看完這一題之後,相信大家應該都知道要怎麼解決了吧

第一種是用 while 迴圈,不斷判斷是否大於某個數字,很多 if else 迴圈這樣

第二種則是華人比較擅長的,直接用數學公式來處理,也是我們這一次使用的

C#解決方案

方案1

int n = int.Parse(Console.ReadLine());
int cnt = 0;

cnt += n/100;
n = n%100;

cnt += n/20;
n = n%20;

cnt += n/10;
n = n%10;

cnt += n/5;
n = n%5;

cnt += n;

Console.WriteLine(cnt);

利用C# 整數相除必定會取得整數(不條件捨去)的特性,我們可以輕鬆的計算有幾張該金額的鈔票

並將 n 設為其餘數,又因最小單位就是 1 ,故 cnt += n 也就是最後有小於 5 的數字就會都以 1元鈔票來做領取。


結論

數學類的問題,好像不太需要多麼認真的思考~

網站2023的年度回顧,大家有興趣可以移駕過去看看 ➡2023年度網站回顧

🧡如果文章有幫上你的忙,那是我的榮幸

🧡收藏文章或幫我點個廣告,那都是對我的支持 (幫我多多分享也大感謝!!)

✅如有任何疑問,歡迎透過留言或messenger讓我知道 !

題目連結 : Problem – 996A – Codeforces

一些其他的Codeforces文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *