解方程
来源:互联网 发布:gb1229厚度 javascript 编辑:程序博客网 时间:2024/05/05 09:46
power oj-1023:解方程
题面链接
题意
输入一个一元一次方程,解出x的值(x为整数,当x>=0时,舍去小数部分,当x<0时向下取整)
输入
输入为合法输入(长度l<=255),允许’+’,’-‘,’=’三种符号
输出
当答案为无数个时输出IDENTITY
当方程无解时输出IMPOSSIBLE
其他情况直接输出x的答案样例输入
3
2x-27+5x+300=98x
x+2=2+x
x+2=x+5样例输出
3
IDENTITY
IMPOSSIBLE完整代码
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int main(){ int i,j,k,t,t1,n,l,flag,flag1,sum,temp,tempt1; float sumx,sum1,ans; char a[3000]; scanf("%d",&n); while(n--) { scanf("%s",a); l=strlen(a); flag=0; flag1=0; sumx=0; sum1=0; sum=0; temp=0; t=0; if(a[0]!='+'&&a[0]!='-') { t=-1; } for(i=1;i<l;i++) { if(a[i]=='+'||a[i]=='-'||a[i]=='='||i==l-1) { if(i==l-1) i++; t1=i; tempt1=t1; k=1; if(flag==1) { if(a[t+1]=='+'||a[t+1]=='-') { t++; continue; } flag++; } if(flag==0)///当“=”还未出现时 { if(t1-t==2&&a[t1-1]=='x') { flag1=1;///x的情况已经运算过了 if(t==-1||a[t]=='+') sumx++; else sumx--; } else if(a[t1-1]=='x') { t1--; } for(j=t1-1;j>t;j--) { sum+=(a[j]-'0')*k; k*=10; } if(a[t1]=='x'&&flag1==0) { if(a[t]=='+'||t==-1) sumx+=sum; else sumx-=sum; } else if(a[t1]!='x'&&flag1==0) { if(a[t]=='+'||t==-1) sum1-=sum; else sum1+=sum; } flag1=0; } else///当“=”出现时 { if(t1-t==2&&a[t1-1]=='x') { flag1=1;///x的情况已经运算过了 if(t==temp||a[t]=='+') sumx--; else sumx++; } else if(a[t1-1]=='x') { t1--; } for(j=t1-1;j>t;j--) { sum+=(a[j]-'0')*k; k*=10; } if(a[t1]=='x'&&flag1==0) { if(a[t]=='+'||t==temp) sumx-=sum; else sumx+=sum; } else if(a[t1]!='x'&&flag1==0) { if(a[t]=='+'||t==temp) sum1+=sum; else sum1-=sum; } flag1=0; } t=tempt1; sum=0; } if(a[i]=='=') { flag=1;///标记已经出现“=” temp=i; } } if(sumx==0&&sum1!=0) printf("IMPOSSIBLE\n"); else if(sumx==0&&sum1==0) printf("IDENTITY\n"); else { ans=sum1/sumx; if(sum1==0) ans=0;///防止-0的情况出现 if(ans<0&&ans!=int(ans)) ans--;///当x为负时并且x为小数时向下取整 printf("%0.f\n",ans); } } return 0;}
0 0
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- 波动方程,达朗贝尔解和亥姆霍兹方程
- matlab之自定义方程系数解方程
- 二分法解方程MATLAB
- 捷联惯导算法--体会与心得
- demo
- JeeSite的Excel导入、导出、支持大数据量,应用annotation最小化配置
- 数据库(Oracle),你至少需要知道这些
- soot数据流 -- 指向分析(points-to)
- 解方程
- java基本知识归集2
- 一起来写个酷炫的水波纹浪啊浪界面
- 20161130
- 从面试开始_我讨厌的排序
- mybatis多对多关联
- 野指针和避免野指针的方法
- 栈内存和队列的底层原理演示
- 同步、异步、阻塞、非阻塞