B1037 在霍格沃茨找零錢(20)

2021-08-18 19:30:42 字數 1275 閱讀 6119

題目描述:

如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統 —— 就如海格告訴哈利的:「十七個銀西可(sickle)兌乙個加隆(galleon),二十九個納特(knut)兌乙個西可,很容易。」現在,給定哈利應付的價錢p和他實付的錢a,你的任務是寫乙個程式來計算他應該被找的零錢。

輸入格式:

輸入在1行中分別給出p和a,格式為「galleon.sickle.knut」,其間用1個空格分隔。這裡galleon是[0, 107]區間內的整數,sickle是[0, 17)區間內的整數,knut是[0, 29)區間內的整數。

輸出格式:

在一行中用與輸入同樣的格式輸出哈利應該被找的零錢。如果他沒帶夠錢,那麼輸出的應該是負數。

輸入樣例1:

10.16.27 14.1.28
輸出樣例1:
3.2.1
輸入樣例2:
14.1.28 10.16.27
輸出樣例2:
-3.2.1
思路:

將p和a全部轉化為knut之後進行運算,在對結果進行除基取餘求出所要答案;

**如下:

#include struct money p, a;

int main()

printf ("%d.%d.%d\n", ans / (29 * 17), ans % (29 * 17) / 29, ans % 29);

return 0;

}

再給出另一種思路:

p和a的加減從低位開始,不夠減時向前一位借位(需考慮前一位為0的情況)。

#include struct money p, a, change;

bool more(money a, money b)

void swap (money *a, money *b)

int main()

if (a.knut >= p.knut) change.knut = a.knut - p.knut;

else }

if (a.sickle >= p.sickle) change.sickle = a.sickle - p.sickle;

else

change.gelleon = a.gelleon - p.gelleon;

printf ("%d.%d.%d\n", change.gelleon, change.sickle, change.knut);

return 0;

}

B1037 在霍格沃茨找零錢 20分

如果你是哈利 波特迷,你會知道魔法世界有它自己的貨幣系統 就如海格告訴哈利的 十七個銀西可 sickle 兌乙個加隆 galleon 二十九個納特 knut 兌乙個西可,很容易。現在,給定哈利應付的價錢 p 和他實付的錢 a,你的任務是寫乙個程式來計算他應該被找的零錢。輸入格式 輸入在 1 行中分別...

B1037 在霍格沃茨找零錢 20分

如果你是哈利 波特迷,你會知道魔法世界有它自己的貨幣系統 就如海格告訴哈利的 十七個銀西可 sickle 兌乙個加隆 galleon 二十九個納特 knut 兌乙個西可,很容易。現在,給定哈利應付的價錢 p 和他實付的錢 a,你的任務是寫乙個程式來計算他應該被找的零錢。輸入格式 輸入在 1 行中分別...

演算法筆記 B1037 在霍格沃茨找零錢

1037 在霍格沃茨找零錢 20 分 如果你是哈利 波特迷,你會知道魔法世界有它自己的貨幣系統 就如海格告訴哈利的 十七個銀西可 sickle 兌乙個加隆 galleon 二十九個納特 knut 兌乙個西可,很容易。現在,給定哈利應付的價錢 p 和他實付的錢 a,你的任務是寫乙個程式來計算他應該被找...