网站制作建站,阿里云建立网站备案,重庆建站管理系统价格,5118数据分析平台官网1111~1115
1113 很难#xff0c;看了题解 人类习惯用 10 进制#xff0c;可能因为大多数人类有 10 根手指头#xff0c;可以用于计数。这个世界上有一种叫“钱串子”#xff08;学名“蚰蜒”#xff09;的生物#xff0c;有 30 只细长的手/脚#xff0c;在它们的世界里…1111~1115
1113 很难看了题解 人类习惯用 10 进制可能因为大多数人类有 10 根手指头可以用于计数。这个世界上有一种叫“钱串子”学名“蚰蜒”的生物有 30 只细长的手/脚在它们的世界里数字应该是 30 进制的。本题就请你实现钱串子世界里的加法运算。
输入格式
输入在一行中给出两个钱串子世界里的非负整数其间以空格分隔。
所谓“钱串子世界里的整数”是一个 30 进制的数字其数字 0 到 9 跟人类世界的整数一致数字 10 到 29 用小写英文字母 a 到 t 顺次表示。
输入给出的两个整数都不超过 105 位。
输出格式
在一行中输出两个整数的和。注意结果数字不得有前导零。
输入样例
2g50ttaq 0st9hk381输出样例
11feik2ir
思想
1、统一字符串长度把较短串用前导0填充。这里可以把处理短串固定位A串用swap(a,b)交换两个字符串
2、把当前位转换成十进制进行计算再把结果转换为十进制。用cur记录当前位join记录进位
3、不要忘记处理最高位进位位
4、去除结果的前导0输出结果字符串 代码
//
// main.cpp
// PAT_1113_钱串子的加法
//
// Created by 徐精泽 on 2024/3/2.
//#include iostream
using namespace std;int main() {//转换成十进制运算再转回30进制string A,B;cinAB;if(A.size()B.size()) //保证A为短串swap(A,B); //交换两个字符串for(int i0;iB.size()-A.size();i){ //用前导0填充短串A0A;}string ans; //定义结果串ans.resize(A.size()); //resize()改变结果串的大小用null填充int join0;for(int i(int)A.size()-1;i0;i--){int a,b;if(0A[i]A[i]9)a A[i]-0;else{a 10A[i]-a;}if(0B[i]B[i]9)b B[i]-0;else{b 10B[i]-a;}int sum abjoin; //十进制计算和int cur sum%30; //模30得当前位join sum/30; //得到进位位if(cur0cur9)ans[i]0cur;elseans[i]acur-10;}if(join0) ans1ans; //别忘记处理最高位进位//处理结果前导0int index0;while(indexans.size()-1ans[index]0)index;//输出for(int iindex;ians.size();i)coutans[i];//如果结果为0即000 ,测试点3coutendl;return 0;
}1115_裁判机 没写出来没时间了。下次写。