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

MYOJ_4553:(洛谷P1022)[NOIP 2000 普及组] 计算器的改良(数学运算与求解相关)

题目描述

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

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

  • 4+3x=8。
  • 6a−5+1=2−2a。
  • −5+12y=0。

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

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

输入

一个一元一次方程。

输出 

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

样例输入输出

输入:6a-5+1=2-2a
输出:a=0.750

思路:

这个题有点绕,但很好做

STEP 1:声明方程字符串,变量名,系数和与常数和(合并同类项方便求解),符号,在方程的哪边

STEP 2:输入,遍历每个字符,开始处理。

STEP 3:如果是等号,就进入右边,重置符号为正

STEP 4:加号,符号为正;减号,符号为负

STEP 5:提取连续的数字字符转为整型

STEP 6:如果是系数项,现特判是否只有字母,此时说明系数=1,然后根据在式子的哪边调整,根据左右边调整符号并累加到变量系数总和

STEP 7:如果是常数项,根据左右边调整符号并累加到常数项总和

STEP 8:保存方程的结果(常数项和 / 变量系数和)

STEP 9:如果结果是-0.0,需要特判为0,不然洛谷的第5测试点不对

STEP 10:按要求输出

代码
#include<bits/stdc++.h>
using namespace std;
string s;
char v;
int c,t=0,n=1;
bool l=true;
int main()
{
    cin>>s;
    for(int i=0;i<s.length();)
	{
        if(s[i]=='=')
		{
            l=false;
            n=1;
            i++;
        }
		else if(s[i]=='+')
		{
            n=1;
            i++;
        }
		else if(s[i]=='-')
		{
            n=-1;
            i++;
        }
		else
		{
            int num=0,j=i;
            bool var=false;
            while(j<s.length()&&isdigit(s[j]))
			{
                num=num*10+(s[j]-'0');
                j++;
            }
            if(j<s.length()&&isalpha(s[j]))
			{
                v=s[j];
                if(i==j)
				{
                    num=1;
                }
                c+=l?n*num:-n*num;
                j++;
            }
			else
			{
                t+=l?-n*num:n*num;
            }
            i=j;
        }
    }
    double ans=(double)t/c;
    if(ans==-0.0)
    {
    	ans=0;
	}
    printf("%c=%.3f",v,ans);
    return 0;
}
运行结果

 

相关文章:

  • ubuntu22.04下安装mysql以及mysql-workbench
  • 【2025年认证杯数学中国数学建模网络挑战赛】A题解题思路与模型代码
  • ssh 登录报错集合(FQA)
  • [WUSTCTF2020]level1
  • 198. 打家劫舍:动态规划
  • Unifying Short and Long-Term Tracking with Graph Hierarchies—CVPR2023
  • Spring定时任务修仙指南:从@Scheduled到分布式调度的终极奥义
  • EtherNet/IP 转 Modbus 协议网关
  • Kaggle-Disaster Tweets-(二分类+NLP+模型融合)
  • 不用额外下载jar包,idea快速查看使用的组件源码
  • 基于JavaAPIforKml实现Kml 2.2版本的全量解析实践-以两步路网站为例
  • 代发考试战报:4月份最新锐捷RCNA RCNP 考试通过战报
  • Stable Diffusion 扩展知识实操整合
  • cin,cin.get(),getchar(),getline(),cin.get line()异同点
  • 深入理解ARP协议:作用与工作流程详解
  • ubuntu 22.04配置cuda和cudnn
  • C++ 虚函数:深入理解多态的核心机制
  • 栈和队列(Stack和Queue)
  • 图片压缩后失真?3款工具还原高清细节
  • 图像变换方式区别对比(Opencv)
  • 郑州金水区网站建设/百度云账号登录
  • 柳市做公司网站/平台推广渠道
  • 上海中国国际进口博览会/系统优化的例子
  • 做整形查什么网站靠谱/企业建站模板
  • 网站做流量的论坛贴吧/搜索引擎排名机制
  • 企业网站源码库/怎么提交百度收录