[2017年第八届真题] 小计算器

2024-05-03 20:08

本文主要是介绍[2017年第八届真题] 小计算器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目: 传送门
思路: 用字符串读入数字,运算全部转成10进制,最后结果转会k进制就行了
注意:

  1. 题目运算过程出现的数非负,且小于2^63,所以要用long long
  2. 读入数字和输出结果都要注意对数位上大于10的数用对应的字母替换
  3. 注意当答案为0情况

Code:

#include<iostream>
#include<queue>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<stack>
#include<string>
#include<queue>
#include<algorithm>typedef long long ll;
using namespace std;int n;
ll a, b;
int k = 10;//当前是k进制
ll k_to_ten(string& x) {//把按字符串读入的数字转成k进制数ll sum = 0;ll t = 1;for (int i=x.length()-1;i>=0;i--) {if (x[i] >= '0' && x[i] <= '9') {sum += t * (x[i] - '0');} else if (x[i] >= 'A' && x[i] <= 'Z') {sum += t * (x[i] - 'A' + 10);}t *= k;}return sum;
}
void print_ans(ll x) {//把十进制的答案转成k进制if (x == 0) {cout<<0<<endl;return;}stack<ll> st;while (x > 0) {st.push(x % k);x /= k;}while (!st.empty()) {if (st.top() >=10) {cout<<(char)(st.top() - 10 + 'A');} else {cout<<st.top();}st.pop();}cout<<endl;
}
int main()
{string op, num;//op:操作 num:数字int opop;// + - * / % 五选一cin>>n;while (n--) {cin>>op;if (op == "CLEAR") {a = b = -1;} else if (op == "NUM") {if (a == -1) {//cin>>num;a = k_to_ten(num);} else {cin>>num;b = k_to_ten(num);switch (opop) {case 1:a+=b;break;case 2:a-=b;break;case 3:a*=b;break;case 4:a/=b;break;case 5:a%=b;break;}}//以下五个运算先保存,不急着计算,等到读入第二个数时再计算} else if (op == "CHANGE") {cin>>k;} else if (op == "EQUAL") {print_ans(a);} else if (op == "ADD") {opop = 1;} else if (op == "SUB") {opop = 2;} else if (op == "DIV") {opop = 4;} else if (op == "MUL") {opop = 3;} else if (op == "MOD") {opop = 5;}}return 0;
} 

这篇关于[2017年第八届真题] 小计算器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957552

相关文章

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

上海大学《2022年836+915自动控制原理真题及答案》 (完整版)

Part1:2022年上海大学真题题目 学硕836 专硕915 Part2:2022年上海大学真题答案 学硕836 专硕915

2017 版本的 WebStorm 永久破解

1.  在IntelliJ官网中下载 最新版本的WebStorm   下载地址:https://www.jetbrains.com/webstorm/download/#section=windows 2. 获取注册码    获取地址:http://idea.lanyus.com/   点击获取注册码,然后将注册码复制,再打开最新版的WebStorm,将注册码粘贴到激活框中就大功告

QT学习之计算器

网格布局初尝试,快速构建计算器 项目结构: wident.h拖动建立界面,20个button,一个lineedit 布局好后整体网格布局调整,依次给每个案件输入文本,并改objectname方便后期辨识 为了在lineedit显示数字,转到槽,编辑点击事件,如显示“1” void Widget::on_pushButton1_clicked(){expression += "1";u

Arcgis字段计算器:随机生成规定范围内的数字

选择字段计算器在显示的字段计算器对话框内,解析程序选择Python,勾选上显示代码块, 半部分输入: import random; 可修改下半部分输入: random.randrange(3, 28) 表示生成3-28之间的随机数 字段计算器设置点击确定完成随机数的生成,生成的随机数如下图所示。

Vue初学-简易计算器

最近在学习Vue的指令,做了一个简易计算器,比较适合刚入门的人参考学习。用到的知识点有: 1.插值表达式 2.v-model,双向绑定+、-、*、/、**等操作符 3.v-show,控制操作数2是否显示,乘方时不显示操作数2 4.methods选项,定义了calculate ()方法,实现各种运算 5.watch选项,监听selected的值的变化。 下面是程序的执行效果: 如果选择的是**乘

华为OD机试真题-猜字谜-2024年OD统一考试(E卷)

题目描述 小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如 nesw,玩家需要猜出谜底库中正确的单词。猜中的要求如下.对于某个谜面和谜底单词,满足下面任一条件都表示猜中: 1、变换顺序以后一样的,比如通过变换 w和e的顺序,“nwes”跟“news”是可以完全对应的: 2、字母去重以后是一样的,比如“woood”和“wood”是一样的,它们去重后都是“wod'请你写一个程序帮忙在