1 条题解
-
1
还是模拟计算过程。
#include <bits/stdc++.h> using namespace std; string s,num; int a[10001],b[10001]; int ai,bi,gcd,lcm,fz; int main(){ //记得将编译器改为C++14 cin>>s; for (int i=0;i<s.size();i++){ if (s[i]=='/'){ a[++ai]=stoi(num); num=""; continue; } if (s[i]=='+'){ b[++bi]=stoi(num); num=""; continue; } num+=s[i]; } b[++bi]=stoi(num); //求出各分子和分母 gcd=lcm=b[1]; for (int i=2;i<=bi;i++){ gcd=__gcd(lcm,b[i]); lcm=lcm*b[i]/gcd; } for (int i=1;i<=ai;i++){ a[i]*=lcm/b[i]; fz+=a[i]; } //通分 if (fz%lcm==0){//处理整数 cout<<fz/lcm; return 0; } gcd=__gcd(fz,lcm);//约分 cout<<fz/gcd<<'/'<<lcm/gcd; return 0; }
- 1
信息
- ID
- 336
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 4
- 标签
- 递交数
- 47
- 已通过
- 23
- 上传者