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

P1022 计算器的改良【洛谷算法习题】

P1022 计算器的改良

网页链接

P1022 计算器的改良

题目背景

NCL 是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任务交给了一个刚进入的新手 ZL 先生。

题目描述

为了很好的完成这个任务,ZL 先生首先研究了一些一元一次方程的实例:

  • 4 + 3 x = 8 4+3x=84+3x=8
  • 6 a − 5 + 1 = 2 − 2 a 6a-5+1=2-2a6a5+1=22a
  • − 5 + 12 y = 0 -5+12y=05+12y=0

ZL 先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及+-=这三个数学符号(当然,符号“-”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。

你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。

输入格式

一个一元一次方程。

输出格式

解方程的结果(精确至小数点后三位)。

输入输出样例 #1

输入 #1

6a-5+1=2-2a

输出 #1

a=0.750

解题思路

本题核心是通过逐字符解析方程分离未知数项和常数项的系数,进而求解一元一次方程:遍历方程的每个字符,用now标记等号左右侧(左侧为1,右侧为-1),f标记当前符号(+为1、-为-1),x累计数字值,k记录未知数总系数,b记录常数项总系数;遇到+/-/=符号时,将累计的数字/未知数项计入对应系数并重置状态,遇到字母时识别为未知数并累计其系数;遍历结束后,通过一元一次方程公式解 = -b/k计算结果,处理-0.0的特殊情况后保留三位小数输出。该方法线性遍历方程字符,时间复杂度O(L)(L为方程长度),适配合法一元一次方程的解析需求,精准求解并按格式输出。

总结

  1. 核心逻辑:逐字符解析方程,分离等号两侧的未知数系数和常数项系数,利用一元一次方程公式求解。
  2. 关键操作:用状态变量标记符号、等号侧、累计数字,识别未知数并统计系数,最后计算并格式化输出解。
  3. 效率保障:线性遍历方程字符,无冗余计算,适配合法一元一次方程的解析场景。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vt;typedefpair<ll,ll>pll;constll N=1e6+10;constll mod=1e9+7;constll INF=1e18;charc,a;intf=1,now=1,k,b,x;boolr;intmain(){while(cin>>c){if(c=='-'){b+=now*f*x;x=0;f=-1;r=0;}if(c=='+'){b+=now*f*x;x=0;f=1;r=0;}if(c=='='){b+=now*f*x;x=0;f=1;now=-1;r=0;}if(c>='a'&&c<='z'){if(r){k+=now*f*x;x=0;}elsek+=now*f;a=c;r=0;}if(c>='0'&&c<='9'){x=x*10+c-'0';r=1;}}b+=now*f*x;doubleans=double(-b*1.0/k);if(ans==-0.0)ans=0;printf("%c=%.3lf",a,ans);return0;}
http://www.jsqmd.com/news/507374/

相关文章:

  • 骑车路线(DP)
  • HTTP状态码项目常见问题解决方案
  • Unity UI (uGUI) 开源项目使用教程
  • 3步搭建免费字幕实时翻译系统:PotPlayer插件全攻略
  • 福建到菲律宾可靠的物流公司怎么选? - mypinpai
  • 自动驾驶中的‘定海神针’:深入浅出聊聊IMU与GNSS的紧组合到底怎么‘紧’
  • macOS Big Sur在OSX-KVM上的性能调优终极指南
  • Dify vs LangChain vs n8n:从零搭建企业级AI应用的实战选型指南(附真实案例)
  • 轻量级华硕硬件控制工具:G-Helper从问题诊断到深度优化指南
  • Zig容器编排:使用Kubernetes部署Zig应用的完整指南
  • DC-9靶场渗透实战:从SQL注入到SSH爆破的完整通关指南(附避坑技巧)
  • Qt + OpenCV图像视觉框架源码探秘
  • 解决OSX-KVM时间同步问题:NTP配置与硬件时钟校准终极指南 [特殊字符]
  • BGE-Large-ZH-V1.5中文语义嵌入模型实战指南
  • Terragrunt工作区:多环境隔离与管理终极指南
  • 解密Doris副本同步机制:Raft协议在分布式查询中的特殊优化
  • GitHub Linguist测试策略:确保语言识别准确性的完整指南
  • YOLOv8-Pose实战:从零构建实时人体姿态检测系统【项目全解析】
  • 如何为Rancher缓慢启动容器配置启动探针:完整指南
  • 基于PID控制的两轮差速小车 轨迹规划跟踪、航向角和距离仿真
  • GitHub Linguist与编辑器集成:VSCode插件开发实例
  • Apktool XML流解码:ResXmlPullStreamDecoder深度解析
  • 年底断舍离|大润发购物卡回收攻略,闲置变现金超简单 - 可可收
  • HackTricks终极攻略:网络安全攻防策略完全指南
  • 《中文Python穿云箭量化平台二次开发技术05》股票K线数据可视化与自定义指标分析实战【动态行情监控工具】
  • 2025阴阳师智能辅助工具:技术革新与效率突破
  • 大电流、高振动、强高温?一文看懂冶金电炉补偿器的核心技术与厂家匹配 - 深度智识库
  • Qt无边框窗口如何“骗”过Win11?手把手教你实现Snap Layout悬浮弹窗(附完整源码)
  • ANFIS自适应模糊神经网络:从理论到实践的智能建模指南
  • Scarab模组管理器:空洞骑士模组安装的终极指南