信息
- ID
- 2286
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 9
- 标签
- 递交数
- 20
- 已通过
- 3
- 上传者
一样情况
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int tot;
long long ans=1,ans1;
string s;
struct nond{
int first,second,pos;
}v[101];
int gcd(long long x,long long y){
return x==0?y:gcd(y%x,x);
}
int main(){
cin>>s;
if(s[0]!='-') s='+'+s;
int len=s.length(),sum=0;
for(int i=0;i<len;i++){
if(s[i]>='0'&&s[i]<='9') sum*=10,sum+=s[i]-'0';
else{
if(s[i]=='/') v[tot].first=sum;
else{
v[tot].second=sum;
if(s[i]=='+') v[++tot].pos=1;
else if(s[i]=='-') v[++tot].pos=-1;
}sum=0;
}
}
v[tot].second=sum;
ans=v[1].second;
for(int i=2;i<=tot;i++)
ans=(v[i].second*ans)/gcd(v[i].second,ans);
for(int i=1;i<=tot;i++){
int GCD=gcd(v[i].first,v[i].second);
v[i].first/=GCD;v[i].second/=GCD;
v[i].first*=ans/v[i].second;
ans1+=v[i].pos*v[i].first;
}
if(ans/gcd(ans,abs(ans1))==1) cout<<ans1/gcd(abs(ans1),ans);
else cout<<ans1/gcd(abs(ans1),ans)<<"/"<<ans/gcd(abs(ans1),ans);
}
得了100分,但错了