題目
鏈接:PAT (Basic Level) Practice 1037 在霍格沃茨找零錢
如果你是哈利·波特迷,你會(huì)知道魔法世界有它自己的貨幣系統(tǒng) —— 就如海格告訴哈利的:“十七個(gè)銀西可(Sickle)兌一個(gè)加隆(Galleon),二十九個(gè)納特(Knut)兌一個(gè)西可,很容易?!爆F(xiàn)在,給定哈利應(yīng)付的價(jià)錢 P 和他實(shí)付的錢 A,你的任務(wù)是寫一個(gè)程序來計(jì)算他應(yīng)該被找的零錢。
輸入格式:
輸入在 1 行中分別給出 P 和 A,格式為
Galleon.Sickle.Knut,其間用 1 個(gè)空格分隔。這里Galleon是 [0,] 區(qū)間內(nèi)的整數(shù),
Sickle是 [0, 17) 區(qū)間內(nèi)的整數(shù),Knut是 [0, 29) 區(qū)間內(nèi)的整數(shù)。輸出格式:
在一行中用與輸入同樣的格式輸出哈利應(yīng)該被找的零錢。如果他沒帶夠錢,那么輸出的應(yīng)該是負(fù)數(shù)。
輸入樣例 1:
10.16.27 14.1.28
輸出樣例 1:
3.2.1
輸入樣例 2:
14.1.28 10.16.27
輸出樣例 2:
-3.2.1
思路
先把錢數(shù)量轉(zhuǎn)換成最小單位Knut,得到找零后再轉(zhuǎn)換成三種單位。
代碼
#include<stdio.h>
int main()
{
int P_Gal, P_Sic, P_Knu, A_Gal, A_Sic, A_Knu,C_Gal,C_Sic,C_Knu;
int P, A, C;
int flag = 0;
scanf("%d.%d.%d %d.%d.%d", &P_Gal, &P_Sic, &P_Knu, &A_Gal, &A_Sic, &A_Knu);
P = (P_Gal * 17 + P_Sic) * 29 + P_Knu;
A = (A_Gal * 17 + A_Sic) * 29 + A_Knu;
C = A - P;
if(C < 0){
flag = 1;
C = -C;
}
C_Knu = C % 29;
C = C / 29;
C_Sic = C % 17;
C_Gal = C / 17;
if(flag == 1){
printf("-");
}
printf("%d.%d.%d", C_Gal, C_Sic, C_Knu);
return 0;
}
---END---
其他相關(guān)題目
PAT-B 1036 跟奧巴馬一起編程(C語言)
PAT-B 1038 統(tǒng)計(jì)同成績(jī)學(xué)生(C語言)
PAT-B 1039 到底買不買(C語言)
PAT-B 1040 有幾個(gè)PAT(C語言)