PAT 乙级 1074 宇宙无敌加法器 (20 分)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是 7 进制数、第 2 位是 2 进制数、第 3 位是 5 进制数、第 4 位是 10 进制数,等等。每一位的进制 d 或者是 0(表示十进制)、或者是 [2,9] 区间内的整数。理论上这个进制表应该包含无穷多位数字,但从实际应用出发,PAT 星人通常只需要记住前 20 位就够用了,以后各位默认为 10 进制。
在这样的数字系统中,即使是简单的加法运算也变得不简单。例如对应进制表“0527”,该如何计算“6203 + 415”呢?我们得首先计算最低位:3 + 5 = 8;因为最低位是 7 进制的,所以我们得到 1 和 1 个进位。第 2 位是:0 + 1 + 1(进位)= 2;因为此位是 2 进制的,所以我们得到 0 和 1 个进位。第 3 位是:2 + 4 + 1(进位)= 7;因为此位是 5 进制的,所以我们得到 2 和 1 个进位。第 4 位是:6 + 1(进位)= 7;因为此位是 10 进制的,所以我们就得到 7。最后我们得到:6203 + 415 = 7201。
输入格式:
输入首先在第一行给出一个 N 位的进制表(0 < N ≤ 20),以回车结束。 随后两行,每行给出一个不超过 N 位的非负的 PAT 数。
输出格式:
在一行中输出两个 PAT 数之和。
输入样例:
30527
06203
415
输出样例:
7201注意三点:
1.不能再用传统的-号去解决进位问题,因为8+8相对于2进制进位太多,所以改用/号
2.注意结果为0的情况(最后一个case)
3.注意首多位为0的情况(如测试样例)
#include<iostream>
#include<string>
#include<stack> using namespace std; char getResult(char ch1, char ch2, char ch3, int &flag)
{
char result;
int temp = ; if (ch1 == '')
temp = ; if (ch2 + ch3 + flag >= ch1 + temp + )
{
result = ch2 + ch3 + flag - ch1 - temp;
flag = (ch2+ch3+flag-)/(ch1+temp-);
}
else
{
result = ch2 + ch3 + flag - ;
flag = ;
} return result;
} int main()
{
string str1, str2, str3;
stack<char> s;
int flag = ; getline(cin, str1);
getline(cin, str2);
getline(cin, str3); int str1Len = str1.size() - ;
int str2Len = str2.size() - ;
int str3Len = str3.size() - ; for (; str2Len >= || str3Len >= ; --str1Len, --str2Len, --str3Len)
{
if (str2Len < )
s.push(getResult(str1[str1Len], '', str3[str3Len], flag));
else if (str3Len < )
s.push(getResult(str1[str1Len], str2[str2Len], '', flag));
else
s.push(getResult(str1[str1Len], str2[str2Len], str3[str3Len], flag));
} if (flag != )//如果flag不为0,则代表有新的进位
s.push(flag + ); while (!s.empty() && s.top() == '')//去除首位的0
s.pop(); if(s.empty())//如果全为0则为0
cout<<<<endl; while (!s.empty())
{
cout << s.top();
s.pop();
} return ;
}
PAT 乙级 1074 宇宙无敌加法器 (20 分)的更多相关文章
- PAT Basic 1074 宇宙无敌加法器 (20 分)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个 PAT 星人都必须熟记各位数字的进制 ...
- 1074 宇宙无敌加法器 (20分)C语言
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个 PAT 星人都必 ...
- pat 1074. 宇宙无敌加法器(20)
1074. 宇宙无敌加法器(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 地球人习惯使用十进制数,并且默 ...
- PAT(B) 1074 宇宙无敌加法器(Java)
题目链接:1074 宇宙无敌加法器 (20 point(s)) 题目描述 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的, ...
- PAT——1074. 宇宙无敌加法器(20)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个PAT星人都必须熟记各位数字的进制表,例如 ...
- PAT 1074 宇宙无敌加法器(20)(代码+思路+测试点分析)
1074 宇宙无敌加法器(20 分)提问 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"P ...
- PAT乙级:1072开学寄语(20分)
PAT乙级:1072开学寄语(20分) 题干 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面 ...
- PAT乙级:1057 数零壹 (20分)
PAT乙级:1057 数零壹 (20分) 题干 给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一 ...
- PAT乙级:1082 射击比赛 (20分)
PAT乙级:1082 射击比赛 (20分) 题干 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找 ...
随机推荐
- [Hive]新增字段(column)后,旧分区无法更新数据问题
问题描述: 实际应用中,常常存在修改数据表结构的需求,比如:增加一个新字段. 如果使用如下语句新增列,可以成功添加列col1.但如果数据表tb已经有旧的分区(例如:dt=20190101),则该旧分区 ...
- 配置xml报错:URI is not registered ( Setting | Project Settings | Schemas and DTDs )
报红提示:URI is not registered ( Setting | Project Settings | Schemas and DTDs ) 解决方法:打开Schemas and DTDs ...
- 写入一个html文件时的编码要求
with open("ip.html",'w',encoding='utf-8') as fp: fp.write(response)
- unzip解压war包并覆盖
unzip -o blog.war -d BLOG 参数: -o 不进行询问直接覆盖 -d 压缩文件解压到BLOG文件夹下 详细使用语法: unzip [-Z] [-opts[modifiers]] ...
- SharePoint 2013 解惑 无法打开文件浏览器
你有时候会看到这东西谈出来,当你想像管理文件一样,管理SharePoint上资源的时候 意思是说,不能打开文件浏览器,请加入你的站点到信任站点,这个有两个问题,一个是IE设置,一个是WebClient ...
- JMeter在linux服务器上使用
环境部署: 1.在Linux服务器先安装jdk:此步骤省略,可参考百度经验:https://jingyan.baidu.com/article/6b18230980c294ba59e15967.htm ...
- 第十六次 ccf 201903-2 二十四点
题意: 计算数学表达式的值, 数学表达式的定义: 4个[0-9]表示数字的字符 ,3个[+-x/]表示运算的字符 可以用正则为: ([0-9][+-x/]){3}[0-9] 例如: 5+2/1x3 2 ...
- 关于nginx安装、iptables设置和查看端口指令netstat/ss
实验1: Nginx介绍 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP ...
- 关于JavaScript的框架和库
0----无所不能的JavaScript: 说到javascript,最先想到的是用于网页交互的脚本语言,这是最早netscope公司开发的基于浏览器内核的语言:但是最近几年一位大牛一chorme内核 ...
- XSS学习(二)
尝试操作Cookie 创建一个cookie,需要提供cookie的名字,值,过期时间和相关路径等 <?php setcookie('user_id',123); ?> 它的作用是创建一个c ...