Cerința
Se dă o expresie cu necunoscutele x y z
și coeficienți întregi. Să se reducă termenii asemenea și să se determine termenul din expresia rezultat cu coeficientul maxim.
Date de intrare
Programul citește de la tastatură un șir de caractere reprezentând expresia.
Date de ieșire
Programul va afișa pe ecran un șir de caractere cu următorul conținut: coeficient necunoscută
, fără spații între ele.
Restricții și precizări
- șirul citit va avea cel mult
255
caractere și poate conține literex y z
, cifre, semnele+ -
și spații. - coeficienții din expresie vor fi numere întregi. Se garantează că pe parcursul reducerii termenilor asemenea valoarea absolută a rezultatelor nu depășește
2.000.000.000
- se garantează că expresia dată este matematic corectă
Exemplu
Intrare
2x+3y+x-15y-6x
Ieșire
-3x
Explicație
După reducerea termenilor asemenea expresia devine -3x-12y
coeficientul maxim este -3
, pentru necunoscuta x
;
#include <bits/stdc++.h> using namespace std; char s[256]; int f[300]; int numar(char ch) { return ch >= '0' && ch <= '9'; } int main() { cin.getline(s , 256); int i = 0; bool sgn = 1; int nr = 0; while(s[i]!='\0') { while(numar(s[i])) { nr=nr*10+(int)s[i]-'0'; i++; } if(s[i]=='-') sgn = false; if(s[i]=='+') sgn = true; if(s[i]=='x' || s[i]=='y' || s[i]=='z') { if(nr == 0) { if(sgn) f[s[i]]++ , nr = 0; else f[s[i]]-- , nr = 0; } if(sgn) f[s[i]]+=nr , nr = 0; else f[s[i]]-=nr , nr = 0; } i++; } char rez; int max = -2000000001; for(char i = 'x' ; i <= 'z' ; ++i) { if(f[i]>max && f[i]!=0) max=f[i] , rez = i; } cout << max << rez; return 0; }