计算器的改良 (模拟)
来源:互联网 发布:python web 开发 编辑:程序博客网 时间:2024/04/30 10:04
计算器的改良
问题描述
NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任务交给了一个刚进入的新手ZL先生。为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例:
4+3x=8
6a-5+1=2-2a
-5+12y=0
ZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、字母及+、-、=这三个数学符号(当然,符号“-”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。
问题求解
编写程序,解输入的一元一次方程, 将解方程的结果(精确至小数点后三位)输出至屏幕。
你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。输入保证方程未知数只包含一个字母。输入保证加减法运算次数之和不超过30次。
样 例
输入: 6a-5+1=2-2a
输出:
a=0.750
题解:
这就是个模拟啊,把含未知数放左边,其余的丢右边,然后加起来相除就好了。
#include<cstdio>#include<cstring>char a[105];inline bool BIG(char C) { if((C>='a'&&C<='z')||(C>='A'&&C<='Z'))return true; return false;}int GetNumber(int st,int en) { int sum=0; for(int i=st; i<en; ++i) { sum=sum*10+(a[i]-'0'); } return sum;}int main() { while(~scanf("%s",a)) { char C; int len=strlen(a); int len1; for(int i=0; i<len; ++i) { if(BIG(a[i])) { C=a[i]; } if(a[i]=='=') { len1=i; } } double X=0,Y=0; int f=0; while(f<len) { int BIGN=1; if(a[f]=='-') { BIGN=-1,++f; } if(a[f]=='+') { ++f; } if(a[f]==C) { if(f>=len1)X-=1.00; else if(f<=len1)X+=1.00; ++f; continue; } if(a[f]=='=') { ++f; continue; } int J=0,pos=-1; for(int i=f; i<len; ++i) { if(BIG(a[i])) { J=1; pos=i; break; } if(a[i]=='-'||a[i]=='+'||a[i]=='=') { J=2; pos=i; break; } } if(pos==-1) { pos=len; } if(pos>=len1&&J==1) { BIGN=-BIGN; } if(pos<=len1&&J!=1) { BIGN=-BIGN; } if(J==1) { X+=(BIGN*1.000*GetNumber(f,pos)); if(J==1)++pos; } else { Y+=(BIGN*1.000*GetNumber(f,pos)); } f=pos; if(f>=len-1)break; } double Ans=Y/X; if(Y==0.000){ Ans=0.00; } printf("%c=%.3f\n",C,Ans); } return 0;}
1 0
- 计算器的改良 (模拟)
- noip2000计算器的改良 (模拟,解一元一次方程)
- P1022 计算器的改良 (模拟)
- [模拟]2000年分区联赛普级组之一 计算器的改良
- NOIP2000 计算器的改良
- NOIP2000计算器的改良
- 1015 计算器的改良
- 1015 计算器的改良
- 计算器的改良
- 计算器的改良(NOIP2000)
- CODE 1015 计算器的改良
- Tsinsen A1128 计算器的改良
- 洛谷 P1022 计算器的改良
- 【洛谷 1022】 计算器的改良
- 【codevs 1015】计算器的改良
- 洛谷 P1022 计算器的改良
- CODE-1015 计算器的改良
- codevs 1005 计算器的改良
- web前端面试题
- jquery判断子元素是否存在
- 快捷方式
- ios托管网站
- Proxies for Shortest Path and Distance Queries
- 计算器的改良 (模拟)
- Android 自定义View 环绕六边形控件及其TouchEvent事件的监听
- codeforces C. Pythagorean Triples (【数学】毕达哥拉斯三元数组 勾股定理)
- webpack sourcemap 选项多种模式的一些解释
- vb工程打开的时候提示 不能加载'...\...\MSCOMCTL.OCX'继续加载工程吗?
- 三角形各元素判断
- awk笔记(常用命令)
- socat端口转发-穿透网络
- Charles 使用教程