1. 程式人生 > 實用技巧 >PAT A1058 A+B in Hogwarts (20)[進位制轉換]

PAT A1058 A+B in Hogwarts (20)[進位制轉換]

題目

題目連結 PAT 1058 A+B in Hogwarts (20)
已知哈利波特的世界中,貨幣單位規則,求兩個金額的總和

解題思路

思路1

每個單位各自相加,若有溢位累計到更大單位

思路2

計算總和化為最小單位,再進行單位拆分

易錯點

總和取最小單位數字: 總和%最小單位進位制數

知識點

已知一個總和數字,將該數字計算出對應不同單位的各單位數字

單詞語法

explain 解釋

Code

Code 01

#include <iostream>
using namespace std;
/* 
	思路1 每個單位各自相加,若有溢位累計到更大單位 
*/
int main(int argc,char * argv[]){
	int g1,s1,k1,g2,s2,k2;
	scanf("%d.%d.%d %d.%d.%d",&g1,&s1,&k1,&g2,&s2,&k2); 
	int k = (k1+k2)%29;
	int s = (s1+s2+(k1+k2)/29)%17;
	int g = g1+g2+(s1+s2+(k1+k2)/29)/17;
	printf("%d.%d.%d",g,s,k);
	return 0;
}

Code 02

#include <iostream>
using namespace std;
/* 
	思路2 計算總和化為最小單位,再進行單位拆分 
*/
int main(int argc,char * argv[]){
	int g1,s1,k1,g2,s2,k2;
	scanf("%d.%d.%d %d.%d.%d",&g1,&s1,&k1,&g2,&s2,&k2); 
	int sum = (g1+g2)*17*29+(s1+s2)*29+k1+k2; 
	int k = sum%29;
	int s = sum/29%17;
	int g = sum/(29*17);
	printf("%d.%d.%d",g,s,k);
	return 0;
}