題目描述:ios
若是你是哈利·波特迷,你會知道魔法世界有它本身的貨幣系統一—就如海格告訴哈利的:「17個銀西可(Sickle)兌一個加隆(Galleon),29個納特(Knut)兌一個西可,很容易」。你的任務是編寫一個程序來計算A+B,其中A和B是按照「Galleon.Sickle.Knut」的標準格式給出的。算法
輸入格式:ide
輸入兩個數A和B,以該格式:Galleon.Sickle.Knutspa
輸出格式:code
輸出A+B的結果,以該格式:Galleon.Sickle.Knutblog
樣例:io
輸入:3.2.1 10.16.27event
輸出:14.1.28class
思路:stream
將兩數所有轉換爲Knut,而後進行相加獲得數res,而後依據題目要求進行輸出。
注意點:
將數轉換爲Knut時,要防止溢出,故將res的類型設置爲long。
代碼:
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 //設置long防止res溢出 7 long res, B_Galleon, B_Sickle, B_Knut, A_Galleon, A_Sickle, A_Knut; 8 9 //讀入數據 10 scanf("%ld.%ld.%ld", &A_Galleon, &A_Sickle, &A_Knut); 11 scanf("%ld.%ld.%ld", &B_Galleon, &B_Sickle, &B_Knut); 12 13 //將錢所有轉換位Knut,res爲long類型防止溢出 14 res = (A_Galleon + B_Galleon) * 17 * 29 + (A_Sickle + B_Sickle) * 29 + (A_Knut + B_Knut); 15 16 //進行輸出 17 printf("%ld.%ld.%ld", (res / 29) / 17, (res / 29) % 17, res % 29); 18 19 return 0; 20 }
參考-《算法筆記》-胡凡