码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-07-18 22:24:15      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:lang   std   易错点   scanf   思路   ems   ble   using   har   

题目

题目链接 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)[进制转换]

标签:lang   std   易错点   scanf   思路   ems   ble   using   har   

原文地址:https://www.cnblogs.com/houzm/p/13337299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!