社区讨论
80分求助
P1572计算分数参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhjsx2xq
- 此快照首次捕获于
- 2025/11/04 07:58 4 个月前
- 此快照最后确认于
- 2025/11/04 07:58 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,f[10010],z[10010],m[10010],s,temp,n,ans,x;
int main(){
ll i=1;
scanf("%d/%d",&a,&b);
char c;
while(cin>>c){
scanf("%d/%d",&z[i],&m[i]);
if(c=='+') f[i]=1;
else f[i]=-1;
n=max(n,m[i]);
i++;
}
ll l=i;
for(i=n;;i++){
if(i%b!=0) continue;
bool f=true;
for(ll j=1;j<=l-1;j++){
if(i%m[j]!=0){
f=false;
break;
}
}
if(f==true){
s=i;
break;
}
}
ans=a*s/b;
for(i=1;i<=l-1;i++) ans+=f[i]*z[i]*s/m[i];
for(i=min(ans,s);i>=2;i--){
if(ans%i==0 && s%i==0){
ans/=i;
s/=i;
}
}
if(s<0){
s=-s;
ans=-ans;
}
if(ans%s==0) cout<<ans/s;
else cout<<ans<<"/"<<s;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...