Untitled
unknown
plain_text
3 years ago
3.2 kB
5
Indexable
#include<bits/stdc++.h> using namespace std; struct phanso{ long long tu,mau; }; vector<phanso>ps,pso; vector<char>dau,d; string s; long long n=s.size(); phanso res; phanso rutgon(phanso a) { phanso c; long tup=a.tu,maup=a.mau; long long ucln=__gcd(tup,maup); tup=tup/ucln; maup=maup/ucln; c.tu=tup; c.mau=maup; return c; } phanso nhan(phanso a,phanso b) { phanso c; long long tua=a.tu,maua=a.mau,tub=b.tu,maub=b.mau; long long tun=tua*tub,maun=maua*maub; c.tu=tun; c.mau=maun; return c; } phanso chia(phanso a,phanso b) { phanso c; long long tua=a.tu,maua=a.mau,tub=b.tu,maub=b.mau; long long tun=tua*maub,maun=maua*tub; c.tu=tun; c.mau=maun; return c; } phanso cong(phanso a,phanso b) { phanso c; long long tua=a.tu,maua=a.mau,tub=b.tu,maub=b.mau; long long tu1=tua*maub,tu2=tub*maua,maun=maua*maub; c.tu=tu1+tu2; c.mau=maun; rutgon(c); return c; } phanso tru(phanso a,phanso b) { phanso c; long long tua=a.tu,maua=a.mau,tub=b.tu,maub=b.mau; long long tu1=tua*maub,tu2=tub*maua,maun=maua*maub; c.tu=tu1-tu2; c.mau=maun; rutgon(c); return c; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long index=0,tup=0,maup=0; string t=""; cin>>s; for(int i=0;i<s.size();i++) { if(s[i]>='0'&&s[i]<='9') t+=s[i]; if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]==':') dau.push_back(s[i]); if(s[i]=='+'||s[i]=='-') d.push_back(s[i]); if(s[i]=='/') { tup=stoll(t); t=""; } if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]==':'||i==s.size()-1) { maup=stoll(t); ps.push_back(phanso()); ps[index].tu=tup; ps[index].mau=maup; index++; t=""; } } for(int i=0;i<ps.size();i++) { ps[i]=rutgon(ps[i]); } long long id=1; pso.push_back(phanso()); pso[0].tu=ps[0].tu; pso[0].mau=ps[0].mau; for(int i=1;i<dau.size();i++) { if(dau[i]=='-') { ps[i+1].tu=-ps[i+1].tu; } if((dau[i]=='+'||dau[i]=='-')&&(dau[i-1]=='+'||dau[i-1]=='-')) { pso.push_back(phanso()); pso[id].tu=ps[i].tu; pso[id].mau=ps[i].mau; id++; } if(dau[i]=='*') { ps[i]=nhan(ps[i],ps[i+1]); rutgon(ps[i]); pso.push_back(phanso()); pso[id].tu=ps[i].tu; pso[id].mau=ps[i].mau; id++; } if(dau[i]==':') { ps[i]=chia(ps[i],ps[i+1]); rutgon(ps[i]); pso.push_back(phanso()); pso[id].tu=ps[i].tu; pso[id].mau=ps[i].mau; id++; } } for(int i=0;i<pso.size();i++) { cout<<pso[i].tu<<" "<<pso[i].mau<<" "<<d[i]<<"\n"; } phanso res; res.tu=pso[0].tu; res.mau=pso[0].mau; for(int i=1;i<pso.size();i++) { res=cong(res,pso[i]); cout<<res.tu<<"/"<<res.mau<<"\n"; } cout<<res.tu<<"/"<<res.mau<<"\n"; return 0; }
Editor is loading...