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)[进制转换]的主要内容,如果未能解决你的问题,请参考以下文章
pat 1058 A+B in Hogwarts(20 分)
PAT 甲级 1058 A+B in Hogwarts (20 分) (简单题)