探索未知

题目背景

下发文件:

https://luogu-ipic.oss-cn-shanghai.aliyuncs.com/watujir2-jdi92.zip

题目描述

2102 年,人类已经建立了从地球到室女座 $\alpha $ 星的星际通道。通道绵延数百光年。

而在通道上有许多路牌。第 i i i 个路牌上写有一个分数 a i b i \dfrac{a_i}{b_i} biai 和一个分数运算符 + + + − -

一开始,你的手上拿着一个数字 0 0 0。你沿着通道向后走。每走到一个路牌,会用手上的数和路牌上的分数,用路牌上的运算符号进行计算,并把得到的新数拿在手中(丢弃掉手中原来的数)。值得注意的是,如果你手中计算得到的数不是整数,则会保留既约分数的形式;否则直接保留整数形式。

现在你想知道,当你走到通道的末端时,手中拿着的数是多少?

输入格式

1 1 1 行共一个正整数 n n n 表示通道内共有 n n n 个路牌。

2 ∼ n + 1 2\sim n+1 2n+1 行每行三个正整数 a i , b i , o p t i a_i,b_i,opt_i ai,bi,opti 表示第 i i i 个路牌上写着的分数为 a i b i \dfrac{a_i}{b_i} biai,运算符为 o p t i opt_i opti

其中, + , − +,- +, 两种运算分别用 1 , 2 1,2 1,2 代替。

输出格式

共一行一个数。

若最终的结果可以保留为整数,则输出一个整数 a n s ans ans 表示结果。

否则,若最终的结果只能保留为分数,则需要以 a / b a/b a/b 的形式输出一个分数 a b \dfrac{a}{b} ba。需要保证 a b \dfrac{a}{b} ba 为既约分数,即 gcd ⁡ ( a , b ) = 1 \gcd(a,b)=1 gcd(a,b)=1

需要注意,结果可能出现负数,此时需要保留负号。例如,若结果为 − 11451 4 -\dfrac{11451}{4} 411451,那么需要输出 -11451/4

样例 #1

样例输入 #1

3
3 5 1
4 7 2
7 3 1

样例输出 #1

248/105

样例 #2

样例输入 #2

4
6 7 1
8 3 2
9 14 2
5 17 1

样例输出 #2

-1541/714

样例 #3

样例输入 #3

3
7 4 1
3 8 2
3 8 2

样例输出 #3

1

提示

对于 20 % 20\% 20% 的数据,运算符只存在加法。

另有 20 % 20\% 20% 的数据,运算法只存在减法。

对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 1 0 3 1\leq n\leq 10^3 1n103 0 ≤ a ≤ 1000 0\leq a \leq 1000 0a1000 0 < b ≤ 1000 0 < b \leq 1000 0<b1000,保证答案以及过程中全部数值(整数部分/分子/分母)不超过 2 × 1 0 9 2\times 10^9 2×109

C++实现

#include<bits/stdc++.h>
using namespace std;
inline long long read(){
long long x=0,f=1;char ch=getchar();
while(ch<‘0’||ch>‘9’){if(ch==‘-’)f=-1;ch=getchar();}
while(ch>=‘0’&&ch<=‘9’){x=x10+ch-48;ch=getchar();}
return x
f;
}
long long gcd(long long a,long long b){
if(a%b0)return b;
else return gcd(b,a%b);
}
long long an,bn,op,x,y,n,k;
int main()
{
n=read();an=0;bn=1;
for(long long i=1;i<=n;i++){
x=read();y=read();op=read();
if(op
1)an=any+xbn;
else an=any-xbn;
bn=bn*y;
k=gcd(an,bn);an=an/k;bn=bn/k;
}
if(an%bn==0)cout<<an/bn;
else if(an>0&&bn<0)cout<<-an<<“/”<<-bn;
else cout<<an<<“/”<<bn;
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

Logo

2万人民币佣金等你来拿,中德社区发起者X.Lab,联合德国优秀企业对接开发项目,领取项目得佣金!!!

更多推荐