傳送門
https://pintia.cn/problem-sets/994805260223102976/problems/994805284923359232
題目
如果你是哈利·波特迷乙漓,你會知道魔法世界有它自己的貨幣系統(tǒng) —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon)帮毁,二十九個納特(Knut)兌一個西可,很容易诺苹。”現(xiàn)在,給定哈利應(yīng)付的價錢P和他實付的錢A,你的任務(wù)是寫一個程序來計算他應(yīng)該被找的零錢护锤。
輸入格式:
輸入在1行中分別給出P和A,格式為“Galleon.Sickle.Knut”酿傍,其間用1個空格分隔烙懦。這里Galleon是[0, 10^7]區(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
分析
首先先都換算成單位為Knut的,然后再計算即可癣朗,注意下為負(fù)的情況要用P減去A拾因,然后如果P與A相等,則輸出0.0.0旷余。
源代碼
//C/C++實現(xiàn)
#include <iostream>
using namespace std;
int main(){
long long priceG, priceS, priceK, payG, payS, payK;
scanf("%lld.%lld.%lld %lld.%lld.%lld", &priceG, &priceS, &priceK, &payG, &payS, &payK);
long long priceSum = priceG * 17 * 29 + priceS * 29 + priceK;
long long paySum = payG * 17 * 29 + payS * 29 + payK;
if(priceSum > paySum){
printf("-");
long long changeSum = priceSum - paySum;
long long changeG = changeSum / (17 * 29);
changeSum -= changeG * 17 * 29;
long long changeS = changeSum / 29;
changeSum -= changeS * 29;
long long changeK = changeSum;
printf("%lld.%lld.%lld\n", changeG, changeS, changeK);
}
else if(priceSum == paySum){
printf("0.0.0\n");
}
else{
long long changeSum = paySum - priceSum;
long long changeG = changeSum / (17 * 29);
changeSum -= changeG * 17 * 29;
long long changeS = changeSum / 29;
changeSum -= changeS * 29;
long long changeK = changeSum;
printf("%lld.%lld.%lld\n", changeG, changeS, changeK);
}
return 0;
}