如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統(tǒng) —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon),二十九個納特(Knut)兌一個西可,很容易。”現(xiàn)在,給定哈利應付的價錢P和他實付的錢A,你的任務是寫一個程序來計算他應該被找的零錢。
輸入格式:
輸入在1行中分別給出P和A,格式為“Galleon.Sickle.Knut”,其間用1個空格分隔。這里Galleon是[0, 107]區(qū)間內(nèi)的整數(shù),Sickle是[0, 17)區(qū)間內(nèi)的整數(shù),Knut是[0, 29)區(qū)間內(nèi)的整數(shù)。
輸出格式:
在一行中用與輸入同樣的格式輸出哈利應該被找的零錢。如果他沒帶夠錢,那么輸出的應該是負數(shù)。
輸入樣例1:10.16.27 14.1.28輸出樣例1:3.2.1輸入樣例2:14.1.28 10.16.27輸出樣例2:-3.2.1
解題思路:本題解題思路簡單,只需將零錢的數(shù)目全部化成最小的單位銀西可(Sickle),然后將兩數(shù)相減,依次對29,17求余即可。經(jīng)過提交測驗,數(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;}
|
新聞熱點
疑難解答