如果你是哈利·波特迷,你會(huì)知道魔法世界有它自己的貨幣系統(tǒng) —— 就如海格告訴哈利的:“十七個(gè)銀西可(Sickle)兌一個(gè)加隆(Galleon),二十九個(gè)納特(Knut)兌一個(gè)西可,很容易。”現(xiàn)在,給定哈利應(yīng)付的價(jià)錢P和他實(shí)付的錢A,你的任務(wù)是寫一個(gè)程序來計(jì)算他應(yīng)該被找的零錢。
輸入格式:
輸入在1行中分別給出P和A,格式為“Galleon.Sickle.Knut”,其間用1個(gè)空格分隔。這里Galleon是[0, 107]區(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
解題思路:本題解題思路簡(jiǎn)單,只需將零錢的數(shù)目全部化成最小的單位銀西可(Sickle),然后將兩數(shù)相減,依次對(duì)29,17求余即可。經(jīng)過提交測(cè)驗(yàn),數(shù)據(jù)范圍并未有超出現(xiàn)象。
提交代碼
#include <stdio.h>int main(){ int p[3],a[3],rest[3]; int p1,a1,s,flag = 1; scanf("%d.%d.%d",&p[0],&p[1],&p[2]); scanf("%d.%d.%d",&a[0],&a[1],&a[2]); p1 = (p[0]*17 + p[1])*29 + p[2]; a1 = (a[0]*17 + a[1])*29 + a[2]; s = a1 - p1; if(s < 0) { s = -s; flag = 0; } rest[2] = s%29; s /= 29; rest[1] = s%17; s /= 17; rest[0] = s; if(!flag) PRintf("-"); printf("%d.%d.%d/n",rest[0],rest[1],rest[2]); return 0;}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注