当前位置: 首页 > news >正文

2025_11_7_刷题

2025_11_7_刷题

文章目录

  • 2025_11_7_刷题
    • 一、前言
    • 二、刷题
      • 2.1 老式计算机
        • 2.1.1 分析题目
        • 2.1.2 思维发散
        • 2.1.3 思路整理
        • 2.1.4 代码
        • 2.1.5 总结
      • 2.2 表达式求值
        • 2.2.1 分析题目
        • 2.2.2 思维发散
        • 2.2.3 思路整理
        • 2.2.4 代码
        • 2.2.5 总结
      • 2.3 表达式求值
        • 2.3.1 分析题目
        • 2.3.2 思维发散
        • 2.3.3 思路整理
        • 2.3.4 代码
        • 2.3.5 总结
      • 2.4 信息整理
        • 2.4.1 分析题目
        • 2.4.2 思维发散
        • 2.4.3 思路整理
        • 2.4.4 代码
        • 2.4.5 总结
    • 三、小结

一、前言

今天是刷题的第3天,今天是关于字符串的几道题目。

二、刷题

2.1 老式计算机


——计挑赛2021年C++组真题

老式的计算机只能按照固定次序进行运算,华安大学就有这样一台老式计算机,计算模式为A @ B #C,@和#为输入的运算符(可能是+、-或*,运算符优先级与C++一致),现给出A,B,C的数值以及@和#对应的运算符,请你编写程序,验证老式计算机的运行结果。

输入说明: 第一行是一个整数N(|N|≤10000),表示有N组计算数据需要处理,接下来N行,每行是相应的数据,包括三个整数和两个运算符,分别对应A、@、B、#和C。

输出说明: 对每行输入的数据,输出计算结果。

输入样例: 3

​ 1+2*3

​ 3*2-1

​ 5+7-9

输出样例: 7

​ 5

​ 3

2.1.1 分析题目

题意大致为该计算机有一个固定的计算模板,对于抛出的计算表达式,能够给出正确的答案。

  • 计算符号只有3种+ - *
  • 模板不是一般的固定——只有3个数字和2个符号
2.1.2 思维发散

本题的难点在于计算优先级的规定。

我一开始想的是用stoi直接将表达式计算出来,但是stoi是不能处理符号,只是转化为数字,直到不是数字就会自动终止。

2.1.3 思路整理
  • 自定义优先级
  • 定义一个计算函数,专门用来计算表达式
  • 循环输出答案
2.1.4 代码
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int n;
int a, b, c;
char ch1, ch2;
int ans;
// 计算优先级
int prior(char c)
{if(c == '*')return 2;if(c == '+' || c == '-')return 1;return 0;
}
// 计算表达式
int calculate(int a, int b, char ch)
{switch(ch){case '+': return a + b;case '-': return a - b;case '*': return a * b;default: return 0;}
}
int main()
{cin >> n;while(n--){cin >> a >> ch1 >> b >> ch2 >> c;if(prior(ch1) < prior(ch2)){int temp = calculate(b, c, ch2);ans = calculate(a, temp, ch1);}else{int temp = calculate(a, b, ch1);ans = calculate(temp, c, ch2);}cout << ans << endl;}return 0;
}

结果

在这里插入图片描述

2.1.5 总结

本题的输入输出和我今天做的另一道很像,同样是固定了模板,输入都是一个一个字符输入,处理思路也很简单。我都想难了——以为要处理字符串。有时解题时也要仔细揣度出题者的用意是考什么。比如这题主要考察运算符的优先级

2.2 表达式求值


——计挑赛2021年C++组真题

老式的计算机只能按照固定次序进行运算,华安大学就有这样一台老式计算机,计算模式为A @ B #C,@和#为输入的运算符(可能是位运算符&、|、^,须考虑计算优先级),现给出A,B,C的数值以及@和#对应的运算符,请你编写程序,验证老式计算机的运行结果。

输入说明: 第一行是一个整数N(|N|≤10000),表示有N组计算数据需要处理,接下来N行,每行是相应的数据,包括三个整数和两个运算符,分别对应A、@、B、#和C。

输出说明: 对每行输入的数据,输出计算结果。

输入样例: 3

​ 1&2|3

​ 3|2^1

​ 5^7|9

输出样例: 3

​ 3

​ 11

2.2.1 分析题目

这个题和上一个题一样,不过考验的运算符升级了——& | ^

2.2.2 思维发散

感觉这个题考察不在算法,而是对于运算符的理解程度。

不过还真被他考着了,这个运算符我不咋熟悉——补一下~

总结如下

运算优先级:~ (按位取反) << >> (移位) & (按位与) ^ (按位异或) | (按位或)

符号释义:

  • &——按位与——全1为1,有0为0
  • ^——按位异或——相同为0,不同为1
  • |——按位或——有1为1,全0为0
2.2.3 思路整理

和上题思路一致

只是要把运算符的优先级函数改一下符号

2.2.4 代码
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int n;
int a, b, c;
char ch1, ch2;
int ans;
// 计算优先级
int prior(char c)
{if(c == '&')return 3;if(c == '^')return 2;if(c == '|')return 1;return 0;
}
// 计算表达式
int calculate(int a, int b, char ch)
{switch(ch){case '&': return a & b;case '^': return a ^ b;case '|': return a | b;default: return 0;}
}
int main()
{cin >> n;while(n--){cin >> a >> ch1 >> b >> ch2 >> c;if(prior(ch1) < prior(ch2)){int temp = calculate(b, c, ch2);ans = calculate(a, temp, ch1);}else{int temp = calculate(a, b, ch1);ans = calculate(temp, c, ch2);}cout << ans << endl;}return 0;
}

结果

在这里插入图片描述

2.2.5 总结

这种运算符日常做题确实不咋用,好吧~将来要成为一个大佬,就是要什么都会

2.3 表达式求值


——计挑赛2021年C++组真题

老式的计算机只能按照固定次序进行运算,华安大学就有这样一台老式计算机,计算模式为A @ B #C,@和#为输入的运算符(可能是+、*、%,须考虑计算优先级),现给出A,B,C的数值以及@和#对应的运算符,请你编写程序,验证老式计算机的运行结果。

输入说明: 第一行是一个整数N(|N|≤10000),表示有N组计算数据需要处理,接下来N行,每行是相应的数据,包括三个整数和两个运算符,分别对应A、@、B、#和C。

输出说明: 对每行输入的数据,输出计算结果。

输入样例: 3

​ 1+2*3

​ 3%2+1

​ 5+7%9

输出样例: 7

​ 2

​ 12

2.3.1 分析题目

不用多说了——运算符改为了+ * %

2.3.2 思维发散

2.3.3 思路整理

CV

2.3.4 代码
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int n;
int a, b, c;
char ch1, ch2;
int ans;
// 计算优先级
int prior(char c)
{if(c == '+')return 1;if(c == '*' || c == '%')return 2;return 0;
}
// 计算表达式
int calculate(int a, int b, char ch)
{switch(ch){case '+': return a + b;case '%': return a % b;case '*': return a * b;default: return 0;}
}
int main()
{cin >> n;while(n--){cin >> a >> ch1 >> b >> ch2 >> c;if(prior(ch1) < prior(ch2)){int temp = calculate(b, c, ch2);ans = calculate(a, temp, ch1);}else{int temp = calculate(a, b, ch1);ans = calculate(temp, c, ch2);}cout << ans << endl;}return 0;
}

结果

在这里插入图片描述

2.3.5 总结

2.4 信息整理


——计挑赛2021年C++组真题

某机房上线了一套系统,和每台计算机都相连,以便监控各计算机相关外设的运行状态。各计算机的返回信号映射为一个0-15的数,其中从左到右第0位为1表示键盘故障、第1位为1表示鼠标故障、第2位为1表示显示故障、第3位为1表示声音故障。 如7对应0111,表示鼠标、显示、声音同时故障。 先输入这N台计算机的状态,请统计键盘或者鼠标故障的计算机数量。

输入说明: 第一行是一个N(0<N≤1000),表示计算机的数量。接下来N行,每行是一个0-15的数字。

输出说明: 一个整数,表示机房里键盘或者鼠标故障的计算机数目。

输入样例: 5

​ 12

	   0

​ 0

​ 2

​ 4

输出样例: 2

2.4.1 分析题目

题意为每个二进制位表示一种计算机的故障位置。输入是十进制数,要求统计从左向右第1位是1或者第2位为1的数字个数。

2.4.2 思维发散

这个和我的第二篇刷题中最后一道有相似之处,都涉及十进制转任意进制。

写过那道,这道相对来说属实是舒适区啦~

2.4.3 思路整理
  • 将输入的10进制转为2进制
  • 遍历2进制的前两位。看是否为1
  • 统计答案
2.4.4 代码
#include<iostream>
using namespace std;
int n,count,num;
char s[4];
void o_to_b(int x, char b[])
{for(int i = 0; i < 4; i++){b[i] = x % 2;x = x/2;}
}
int main()
{cin >> n;while(n--){cin >> num;o_to_b(num, s);if(s[3] == 1 || s[2] == 1){count++;}}cout << count << endl;return 0;
}

结果

在这里插入图片描述

2.4.5 总结

本题还好。

三、小结

今日份刷题挺有水分的哈~但好得是真题(同一套的),明天继续!

http://www.dtcms.com/a/581571.html

相关文章:

  • 邓州微网站建设毕业季网站如何做网页
  • 网站是用什么软件做的吗网站设置访问权限
  • AWS + 苹果CMS:影视站建站的高效组合方案
  • 【动手学深度学习】
  • H2 vs SQLite 全面对比
  • python+django/flask的城市供水管网爆管预警系统-数据可视化
  • SQLite 方言解决方案
  • Jenkins + Docker 打造自动化持续部署流水线
  • 利用DeepSeek改写SQLite版本的二进制位数独求解SQL
  • python+django/flask的校园活动中心场地预约系统
  • 建设网站公司哪好html5手机网站开发环境
  • Python高效实现Word转HTML:从基础到进阶的全流程方案
  • 智能驱动,安全可控:EasyGBS平台如何构建企业生产智能监控新模式
  • 建设部网站官网证书查询做网站建设最好学什么
  • 【深度解析】Performance API 与 UKM:从开发者工具到浏览器遥测,全面解锁 Web 性能优化格局
  • 前端项目打包后报错 Uncaught ReferenceError: process is not defined
  • 基于Python的历届奥运会数据可视化分析系统-django+spider
  • 【ZeroRang WebRTC】ICE 在 WebRTC 中的角色与工作原理(深入指南)
  • 计算机视觉(一):相机标定
  • OJ项目面经
  • 免费空间领取网站为企业设计网站
  • 邮储政务金融云平台官网地址无法百度
  • Flutter AnimatedRotation 实现旋转动画
  • 五、CSS盒子模型(下)
  • 网站建设的方法有四种怎样创建公众号
  • 开源项目ruoyi-ai本地部署
  • 乡镇同城O2O系统开发:Java与PHP技术选型对比
  • google提交网站入口能打开各种网站的搜索引擎
  • MyBatis完整教程IDEA版(3)--动态SQL/MyBatis缓存
  • 基于Vue的饮食健康管理系统的设计与实现fs9r43tj(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。