传送

这个题让你通过自己的努力,来写一个可以解一元一次方程的计算题(麻麻再也不用担心我计算错了qwq)

我们先学习一下一元一次方程的解法

step1:移项。把带有未知数的项移到方程的一边,把常数项移到方程的另一边。

step2:系数化一。方程左右两边同时除以未知数的系数

step3:写答(最后别忘了输出是"未知数=....."的格式)

解方程都会,关键是怎么让电脑进行移项。我们在解方程的时候通常把未知数移到左边,常数移到右边,并且在等号右边含有未知数的项是要变号的,在等号左边常数项要变号。所以我们在计算未知数的系数与常数时,可以以等号为划分点,进行计算。

方程用字符串的形式读入,我们也注意到,每一项的起点是发现“+“ ”-” “=”,终点也是如此。所以我们在没有扫描到符号或未知数时,就继续计算当前项的绝对值,当扫描到下一个符号的时候,就将算好的值按照符号与是否扫描过等号累加(这里分别用k,v记录未知数的系数和所有常数项的和)

v/k的值即为答案,注意ans如果是-0,要特判,输出正0(虽然这俩没毛区别,但评测机说你错了你就错了)

一些小坑见代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
char a[],c,aa;//aa记录未知数是什么字符
int m,k,q,v;
bool dy,xs;//dy标记是否扫描过等号,xs标记是否是含未知数的项(系数)
int main()
{
scanf("%s",a);
for(int i=;i<strlen(a);i++)//我们顺序扫描
{if(a[i]=='+'||a[i]=='-'||a[i]=='=')
{
if(dy)//等号右边的项
{if(xs){if(m==)m=;if(c=='-'){k+=m;m=;}else{k-=m;m=;}}//注意若未知数前面不写系数,则系数是1
else{if(c=='-'){v-=m;m=;}else{v+=m;m=;}}
}
if(!dy)//等号左边的项
{if(xs){if(m==)m=;if(c=='-'){k-=m;m=;}else{k+=m;m=;}}
else{if(c=='-'){v+=m;m=;}else{v-=m;m=;}}
}
if(a[i]=='=')dy=;//注意这些的更新顺序
c=a[i]; //记录符号
xs=;
}
else if(a[i]>=''&&a[i]<='') {m=m*+a[i]-;xs=;} //只有是数字的字符才计算
else {xs=;aa=a[i];//记下未知数的字符
}
}
if(xs)//最后一项扫描不到,要补上
{if(c=='-')k+=m;
else k-=m;
}
else
{if(c=='-')v-=m;
else v+=m;
}
double ans;
if(k!=)
ans=1.0*v/k;
else ans=0.000;
if(ans==-)ans=;
cout<<aa<<"="; printf("%.3lf",ans);
}

打了好久qwq

P1022计算器の改良的更多相关文章

  1. P1022 计算器的改良

    P1022 计算器的改良 题目背景 NCL 是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给 ...

  2. 洛谷—— P1022 计算器的改良

    P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...

  3. 洛谷P1022 计算器的改良

    P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...

  4. P1010 幂次方 P1022 计算器的改良

    P1010 幂次方 一.题目 https://www.luogu.org/problemnew/show/P1010 二.代码 #include<bits/stdc++.h> using ...

  5. 2021.07.26 P1022 计算器的改良(字符串)

    2021.07.26 P1022 计算器的改良(字符串) 改进: 如果是我出题,我一定把未知数设为ab.buh.bluesky之类的长度不只是1的字符串! 题意: 一个一元一次方程,求解. 分析: 1 ...

  6. [NOIP2000] 提高组 洛谷P1022 计算器的改良

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

  7. 洛谷——P1022 计算器的改良

    https://www.luogu.org/problem/show?pid=1022#sub 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在 ...

  8. (水题)洛谷 - P1022 - 计算器的改良

    https://www.luogu.org/problemnew/show/P1022 服了,居然还有+0.000和-0.000的不同,真的服了. #include<bits/stdc++.h& ...

  9. 洛谷 P1022 计算器的改良

    题解:字符串模拟 坑点: 1) 0/-1=-0. 这是因为(来自洛谷讨论区某大犇) double下存储的数字会有精度误差,比如0可能被存成0.000000000...01然而如果你乘上或者除以一个负数 ...

随机推荐

  1. Codeforces 396C (DFS序+线段树)

    题面 传送门 题目大意: 给定一棵树,每个点都有权值,边的长度均为1,有两种操作 操作1:将节点u的值增加x,并且对于u的子树中的任意一个点v,将它的值增加x-dist(u,v)*k, dist(u, ...

  2. Mock接口数据 = mock服务 + iptable配置

    一.mock接口数据应用场景: 1.测试接口A,A接口代码中调用其他服务的B接口,由于开发排期.测试环境不通等原因,依赖接口不可用 2.测试异常情况,依赖接口B返回的数据格式不对.返回None.超时等 ...

  3. Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析 (转)

    阅读前提:本文分析的是源码,所以至少读者要熟悉它们的接口使用,同时,对于并发,读者至少要知道 CAS.ReentrantLock.UNSAFE 操作这几个基本的知识,文中不会对这些知识进行介绍.Jav ...

  4. 2019牛客暑期多校训练营(第四场) - K - number - dp

    https://ac.nowcoder.com/acm/contest/884/K 一开始整了好几个假算法,还好测了一下自己的样例过了. 考虑到300的倍数都是3的倍数+至少两个零(或者单独的0). ...

  5. struts2 spring 优缺点

    struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发.优点:Struts跟Tomcat.Turbine等诸多Apache项目一样,是开源软件,这是它的一大 ...

  6. 给当当同学的random data

    m**o 00'57"32街**o 00'52"23c**6 00'44"15斗**6 00'57"58n**5 00'32"04s**p 00'51 ...

  7. Scala本地安装

    一.下载 https://www.scala-lang.org/download/ 这里我选择Scala2.10.4版本 二.安装 安装比较简单  和jdk类似 点击一路安装: 选择自己的路径 完成 ...

  8. Linux--shell三剑客<sed>--07

    1.sed(stream editor): 作为行编辑器,对文本进行编辑(以行为单位) 默认显示输出所有文件内容 注意:sed编辑文件,却不改变原文件 2.sed的工作原理: 指定一个文本文件,依次读 ...

  9. 实验查看PHP本地的Session信息

    通过Nginx调度器负载后端两台Web服务器,实现以下目标: - 部署Nginx为前台调度服务器 - 调度算法设置为轮询 - 后端为两台LNMP服务器 - 部署测试页面,查看PHP本地的Session ...

  10. sort 文本排序

    1.命令功能 sort 将输入的文件内容按照指定的规则排序,然后将排序的内容输出. 2. 语法格式 sort  option  file 参数说明 参数 参数说明 -b 忽略每行开头的空格 -n 根据 ...