It's simulation, plus the elementary school solution of the univariate linear equation
Actually, many of the duplicates can be used with functions, but I always like to copy and paste!(x)
Improvement of P1022 Calculator
Topic Background
NCLNCL is a lab specializing in the improvement and upgrade of calculators. Recently, the lab received a task entrusted by a company: the ability to solve one-variable first-order equations needs to be added to the calculator of a certain model of the company.The lab delegated the task to a new beginner, Mr. ZL.
Title Description
In order to accomplish this task well, Mr. ZLZL first studied some examples of univariate linear equations:
4+3x=84+3x=8
6a-5+1=2-2a6a−5+1=2−2a
-5+12y=0−5+12y=0
Mr. ZLZL was informed by his supervisor that only three mathematical symbols, integer, lowercase letters and +, -, =, were included in a unary one-time equation typed on the computer (of course, the symbol'-'can be used as either a minus sign or a minus sign).There are no parentheses or division signs in the equation, and the letters in the equation represent unknown numbers.
You can assume that another programmer is making a judgement of the correctness of the equations you type, or that the one-time equations you type are valid and have a unique real solution.
Input and Output Formats
Input format:An equation of one degree with one variable.
Output format:The result of solving the equation (exactly three decimal places).
Input and Output Samples
#include <iostream> #include <cmath> #include <stdio.h> #include <cstring> using namespace std; int main() { char a[110]={0}; cin>>a; double s=0,g=0;//Result, constant before unknown number int i; char y; for(i=0;i<strlen(a);){ if(a[i]=='=') break; if(a[i]=='+'||i==0&&a[0]!='-'){ if(i!=0) i++; int t=0; while(a[i]>='0'&&a[i]<='9'){ t=t*10+(a[i]-'0'); i++; } if(a[i]>='a'&&a[i]<='z'){ y=a[i]; if(t==0) t=1; g+=t; i++; }else{ s-=t; } } if(a[i]=='-'){ i++; int t=0; while(a[i]>='0'&&a[i]<='9'){ t=t*10+(a[i]-'0'); i++; } if(a[i]>='a'&&a[i]<='z'){ y=a[i]; if(t==0) t=-1; g-=t; i++; }else{ s+=t; } } } int h=++i; for(;i<strlen(a);i++){ if(a[i]=='+'||i==h&&a[h]!='-'){ if(i!=h) i++; int t=0; while(a[i]>='0'&&a[i]<='9'){ t=t*10+(a[i]-'0'); i++; } if(a[i]>='a'&&a[i]<='z'){ y=a[i]; if(t==0) t=1; g-=t; }else{ s+=t; } } if(a[i]=='-'){ i++; int t=0; while(a[i]>='0'&&a[i]<='9'){ t=t*10+(a[i]-'0'); i++; } if(a[i]>='a'&&a[i]<='z'){ y=a[i]; if(t==0) t=-1; g+=t; }else{ s-=t; } } } double x=s/g; //cout<<s<<" "<<g<<endl; printf("%c=%.3f\n",y,x); return 0; }