Codeforces 148A Insomnia cure 治癒失眠的辦法

失眠的公主因為自己的失眠困擾而在數著想像中的龍,並欺負著他們!?

難易度 : 800

英文原文如下

«One dragon. Two dragon. Three dragon», — the princess was counting. She had trouble falling asleep, and she got bored of counting lambs when she was nine.

However, just counting dragons was boring as well, so she entertained herself at best she could. Tonight she imagined that all dragons were here to steal her, and she was fighting them off. Every k-th dragon got punched in the face with a frying pan. Every l-th dragon got his tail shut into the balcony door. Every m-th dragon got his paws trampled with sharp heels. Finally, she threatened every n-th dragon to call her mom, and he withdrew in panic.

How many imaginary dragons suffered moral or physical damage tonight, if the princess counted a total of d dragons?

中文翻譯

«一隻龍、兩隻龍、三隻龍» — 公主正在數數量。她有失眠的困擾,然後當她9歲時她覺得數羊很無聊。

然而,僅僅數龍也讓她感到無聊,所以她盡力讓自己娛樂起來。今晚,她想像所有的龍都來這裡想要綁架她,而她正在與他們搏鬥。每個第 k 隻龍都被用平底鍋打在臉上。每個第 l 隻龍的尾巴都被夾在陽台門裡。每個第 m 隻龍的爪子都被尖利的高跟鞋踩踏。最後,她威脅每個第 n 隻龍要打電話給她媽媽,他們驚慌地退了回去。

假設公主總共數了 d 隻龍,那共有幾隻想像中的龍在今晚受到道德或身體上的傷害

輸入

Input data contains integer numbers k, l, m, n and d, each number in a separate line (1 ≤ k, l, m, n ≤ 10, 1 ≤ d ≤ 105).

輸入的資料包含了數字 k, l, m, n 跟 d,每一個數字都由一行間隔 (1 ≤ k, l, m, n ≤ 10, 1 ≤ d ≤ 105)。

輸出

Output the number of damaged dragons.

印出受到傷害的龍的數量。

範例

輸入1
2
3
4
12
輸出12
輸入2
3
4
5
24
輸出17

筆記

In the first case every first dragon got punched with a frying pan. Some of the dragons suffered from other reasons as well, but the pan alone would be enough.

In the second case dragons 1, 7, 11, 13, 17, 19 and 23 escaped unharmed.

在第一個例子中,每個第一隻龍(這裡我覺得翻得有點彆扭,就當作是每一隻龍)都被平底鍋打,有一些龍因為其他原因受到了傷害,但平底鍋已經足夠了。

在第二個例子中,第 1, 7, 11, 13, 17, 19 跟 23 沒有受到傷害。


解題思路

這一題其實就是一個有關於倍數的問題,每隔X次就會被公主欺負

所以我們可以用一個簡單的迴圈並配上 %運算子(餘數)就能解決

C#解決方案

方案1

int k = int.Parse(Console.ReadLine());
int l = int.Parse(Console.ReadLine());
int m = int.Parse(Console.ReadLine());
int n = int.Parse(Console.ReadLine());
int d = int.Parse(Console.ReadLine());


if(k==1 || l==1 || m==1 || n==1){
    Console.WriteLine(d);
}
else
{
    int cnt = 0;    // number of damaged dragons
    
    for(int i=1; i<=d ;i++){
        if (i % k == 0 || i % l == 0 || i % m == 0 || i % n == 0)
        {
            cnt++;
        }
    }
    Console.WriteLine(cnt);
}

我們會先判斷有沒有條件是 1 的,那就代表了所有的龍都會受到傷害~

for(int i=1; i<=d ;i++) : 由1開始而不是從0開始是為了方便後續的計算

這邊要注意不要重複計算到了,寫成 if、else if 也是可以的,就怕寫成多個 if 導致一隻龍被算成兩隻…


結論

剛好今年在中華新年也是龍年,結果就寫到了這一題可憐的龍啊~

另外,運動對於失眠也是有顯著的幫助,大家可以去試試看

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

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

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

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

題目連結 : Problem – 148A – Codeforces

一些其他的Codeforces文章

發佈留言

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