PAT A1058 A+B in Hogwarts (20)[进制转换]

Posted houzm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}

以上是关于PAT A1058 A+B in Hogwarts (20)[进制转换]的主要内容,如果未能解决你的问题,请参考以下文章

PAT1058:A+B in Hogwarts

pat 1058 A+B in Hogwarts(20 分)

PAT1058 A+B in Hogwarts

PAT 甲级 1058 A+B in Hogwarts (20 分) (简单题)

PAT-进制转换-A1058 A+B in Hogwarts (20分)

PAT (Advanced Level) 1058. A+B in Hogwarts (20)