打卡信奥刷题(668)用C++信奥P8584[普及组/提高] 探索未知
探索未知
题目背景
下发文件:
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 2∼n+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 1≤n≤103, 0 ≤ a ≤ 1000 0\leq a \leq 1000 0≤a≤1000, 0 < b ≤ 1000 0 < b \leq 1000 0<b≤1000,保证答案以及过程中全部数值(整数部分/分子/分母)不超过 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 xf;
}
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(op1)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考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
更多推荐



所有评论(0)