RE求助

P1572 计算分数

改成这样 ```c #include <bits/stdc++.h> using namespace std; int a,b,am=0,az=0; int gcd(int a,int b){//最大公因数 if(b==0) return a; else return gcd(b,a%b); } int lcm(int a,int b){//最小公倍数 return a/gcd(a,b)*b; } void pls(int m,int z){//分数加法 if(am==0 && az==0){ am=m; az=z; for(int i=2;i<=min(am,az);i++){//约分 if(am%i==0 && az%i==0){ am/=i; az/=i; } } return; } int l=lcm(am,m); z*=(l/m); az*=(l/am); am=l; az+=z; for(int i=2;i<=min(am,az);i++){//约分 if(am%i==0 && az%i==0){ am/=i; az/=i; } } } void mns(int m,int z){//分数减法 int l=lcm(am,m); z*=(l/m); az*=(l/am); am=l; az-=z; for(int i=2;i<=min(am,az);i++){//约分 if(am%i==0 && az%i==0){ am/=i; az/=i; } } } int main(){ int z,m; char c,d; cin>>z>>d>>m; pls(m,z); while(cin>>c>>z>>d>>m){ if(c=='+') pls(m,z); else mns(m,z); } if(am==1) cout<<az; else cout<<az/gcd(abs(az),abs(am))<<"/"<<am/gcd(abs(az),abs(am)); return 0; } ```
by lij123 @ 2024-04-21 08:34:37


@[DougNo1](/user/915921)
by lij123 @ 2024-04-21 08:35:10


@[lij123](/user/1037981) AC了,谢谢!
by DougNo1 @ 2024-04-21 14:12:10


|