[NOIP2000] 提高组 洛谷P1022 计算器的改良
题目背景
NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任务交给了一个刚进入的新手ZL先生。
题目描述
为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例:
4+3x=8
6a-5+1=2-2a
-5+12y=0
ZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及+、-、=这三个数学符号(当然,符号“-”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。
你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。
输入输出格式
输入格式:
一个一元一次方程。
输出格式:
解方程的结果(精确至小数点后三位)。
输入输出样例
6a-5+1=2-2a
a=0.750
挨个读入每一个字符,提取出字母和数字,将字母项移到等号左边,将数字项移到等号右边,累加代数项系数和数字项值。
读入结束以后就得到x*a=y形式的式子,则a=y/x
有些迷的问题是double型从负数算到0,变量里存的值是-0.000,这时候需要特判,赋值成0.000
写这个的灵感是从现在常用的手写读入优化函数来的。也许当年是有人通过这道题得到了读入优化的灵感?
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int n,f;
int side;
int num;
char s[];
char tar;
int main(){
int x=,f=;
side=;
scanf("%s",s);
char ch;
int len=strlen(s);
s[len]='+';
for(int i=;i<=len;i++){
ch=s[i];
if( (ch<'' || ch>'' ) ){
if(ch<'a' || ch>'z'){
num+=-*x*f*side;
x=; f=;
}
}
if(ch>='a' && ch<='z'){
tar=ch;
if(!x)x=;x=x*f*side;
n+=x;
x=;f=;
continue;
}
if(ch>='' && ch<=''){
x=x*+ch-'';
continue;
}
if(ch=='='){side=-;continue;}//等号以后的项要变号
if(ch=='-'){f=-;continue;}
if(ch=='+'){f=;continue;}
}
double ans=(double)num/(double)n;
if(ans==-)ans=;
printf("%c=%.3f\n",tar,ans);
return ;
}
[NOIP2000] 提高组 洛谷P1022 计算器的改良的更多相关文章
- [NOIP2000] 提高组 洛谷P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...
- [NOIP2000] 提高组 洛谷P1018 乘积最大
题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得 ...
- [NOIP2000] 提高组 洛谷P1017 进制转换
题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*10^2+2*10^1+3*10^ ...
- 洛谷—— P1022 计算器的改良
P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...
- 洛谷P1022 计算器的改良
P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...
- 洛谷 P1022 计算器的改良
题解:字符串模拟 坑点: 1) 0/-1=-0. 这是因为(来自洛谷讨论区某大犇) double下存储的数字会有精度误差,比如0可能被存成0.000000000...01然而如果你乘上或者除以一个负数 ...
- [NOIP2000] 提高组 洛谷P1023 税收与补贴问题
题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...
- (水题)洛谷 - P1022 - 计算器的改良
https://www.luogu.org/problemnew/show/P1022 服了,居然还有+0.000和-0.000的不同,真的服了. #include<bits/stdc++.h& ...
- 洛谷——P1022 计算器的改良
https://www.luogu.org/problem/show?pid=1022#sub 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在 ...
随机推荐
- Redis学习笔记1-安装配置
一.Redis安装 Redis官网:http://www.redis.io/download 注意:版本号2.4,2.6,2.8等偶数结尾为稳定版,2.5等为非稳定版本,生成环境应该使用稳定版 下载解 ...
- AJPFX总结I/O流操作(二)
FileWriter:该类没有特有的方法只有自己的构造函数.该类特点在于1,用于处理文本文件.2,该类中有默认的编码表,3,该类中有临时缓冲.构造函数:在写入流对象初始化时,必须要有一个存储数据的目的 ...
- android studio 导入jar包
或者还可以这么导入: 1.首先先去下载需要的jar包2.将jar包复制到Project下的app–>libs目录下(没有libs目录就新建一个)如下图所示位置: 3.点击工具栏中的Project ...
- Kotlin学习的一些笔记
Introduction 写在前面 关于本书 这本书适合你吗? 关于作者 介绍 什么是Kotlin? 我们通过Kotlin得到什么 准备工作 Android Studio 安装Kotlin插件 创建一 ...
- java实现排序的几种方法
package com.ywx.count; import java.util.Scanner; /** * 题目:排序的几种方式(汇总及重构) * @author Vashon(yangwenxue ...
- virtualbox没有64位选项
今天安装的virtualbox想安装一下sql server 测试一下 在安装系统的时候发现没有64位系统的选项,在网上找了一下 发现是 在BIOS里面有一个选项没有开启, 是 Intel virt ...
- 如何在Ubuntu里安装Helm
Helm是什么?在战网上玩过暗黑破坏神2代的程序员们应该还记得,Helm是国度的意思. 而在计算机领域,Helm是什么? Helm是Kubernetes的一个包管理工具,有点像nodejs的npm,U ...
- 如何破解密码的哈希值,破解双MD5密码值
这是关于我如何破解密码的哈希值1亿2200万* John the Ripper和oclHashcat-plus故事. 这是几个月前,当我看到一条推特:从korelogic约含共1亿4600万个密码的密 ...
- 平时有没有使用xml和json
平时有没有使用xml和json,在ajax交互中,哪一种更易于开发和维护,js中怎么序列化JSON字符串? 有,json相比xml可读性和可扩张性好.编码及解码难度较低.在数据交互中带宽占用少,并且在 ...
- Linux常用的操作指令
1.pwd-显示当前所在位置 2.cd-进入当前目录 3.cd..-返回上一级目录 4..ls命令参数选项有很多,ls也是经常使用到的命令.如果不清楚命令的使用方式可以直接 ls --help来查看 ...