首页 > 其他分享 >信奥一本通题陈老师解题:1209:分数求和

信奥一本通题陈老师解题:1209:分数求和

时间:2024-09-10 08:52:24浏览次数:1  
标签:tmp 分数 1209 qp int denominator numerator 通题 信奥

【题目描述】

【输入】

第一行是一个整数nn,表示分数个数,1≤n≤101≤n≤10;

接下来nn行,每行一个分数,用"p/qp/q"的形式表示,不含空格,p,qp,q均不超过1010。

【输出】

输出只有一行,即最终结果的最简形式。若为分数,用"p/qp/q"的形式表示。

【输入样例】

2
1/2
1/3

【输出样例】

5/6

 

#include <iostream>
using namespace std;
/* 方法运行超时 
void solve(int numerator, int denominator,int n)
{
	if(denominator==1)
	{
		cout<<numerator<<endl;
		return;
	}
	if(n<=1)
	{
		cout<<numerator<<"/"<<denominator<<endl;
		return;
	}
	if(numerator%n==0&&denominator%n==0)
	{
		numerator/=n;
		denominator/=n;
	}
	solve(numerator,denominator,n-1);
}
*/

int gcd(int a,int b) //辗转相除法求最大公约数 
{
	return a%b==0?b: gcd(b,a%b);
}

int main()
{
	int n,numerator,denominator,tmp_numerator,tmp_denominator;
	char c;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>tmp_numerator>>c>>tmp_denominator;
		if(i==1)
		{
			numerator=tmp_numerator;
			denominator=tmp_denominator;
		}
		else //通分 
		{	
			numerator=numerator*tmp_denominator+tmp_numerator*denominator;//顺序跟下面不能倒过来 
			denominator*=tmp_denominator; //总分母
		}
	}
	int tmp=gcd(numerator,denominator); //最大公约数 
	numerator/=tmp;
	denominator/=tmp;
	if(denominator==1)
		cout<<numerator;
	else
		cout<<numerator<<"/"<<denominator<<endl;
	//solve(numerator,denominator,max(numerator,denominator));
	return 0;
}

 

标签:tmp,分数,1209,qp,int,denominator,numerator,通题,信奥
From: https://www.cnblogs.com/nanshaquxinaosai/p/18405734

相关文章

  • 南沙C信++奥赛陈老师解一本通题: 1205:汉诺塔问题
    ​【题目描述】约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到中间的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。这是一个著名的问题,几乎所有的教......
  • 信奥OJ的搭建
     第一步,服务器申请选择一:免费云服务器,免费虚拟主机如:阿贝云阿贝云提供了免费的云服务器和免费的云虚拟主机,可根据自己的实际应用情况选择。首先注册一个账户,然后需要支付0.3元做一个实名认证,如果实名认证成功了大概率会开通成功。如果失败了可能是服务器资源池......
  • 南沙信奥赛C++陈老师解一本通题: 1326:【例7.5】 取余运算(mod)
    ​【题目描述】【输入】输入b,p,k的值。【输出】【输入样例】2109【输出样例】2^10mod9=7 #include<iostream>#include<stdlib.h>usingnamespacestd;longlongb,p,k,ans=1;intmain(){ cin>>b>>p>>k; for(inti=1;i<=p;i++) { ans*=b;......
  • 南沙信奥赛C++陈老师解一本通题: 1171:大整数的因子
    ​ 【题目描述】已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。【输入】一个非负整数c,c的位数≤30。【输出】若存在满足 c%k==0的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。【输入样......
  • 南沙信C++陈老师解一本通题:1310:【例2.2】车厢重组
    ​【题目描述】在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列......
  • 南沙信C++陈老师解一本通题: 1101:不定方程求解
    ​ 【题目描述】给定正整数a,b,c。求不定方程 ax+by=c关于未知数x和y的所有非负整数解组数。【输入】一行,包含三个正整数a,b,c两个整数之间用单个空格隔开。每个数均不大于1000。【输出】一个整数,即不定方程的非负整数解组数。【输入样例】2318【输出样例】4......
  • 信奥赛C++老师解一本通题:1182:合影效果
    ​【题目描述】小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?【输入】第一行是人数nn(2≤n≤......
  • 信奥赛C++老师解一本通题:1938:【07NOIP普及组】奖学金
    ​【题目描述】某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排......
  • 信奥赛C++老师解一本通题: 1180:分数线划定
    ​ 【题目描述】世博会志愿者的选拔工作正在A市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m×150%(向下取整)名的选手......
  • 南沙信C++陈老师解一本通题: 2031:【例4.17】四位完全平方数
    ​ 题目描述】输出所有形如aabb的四位完全平方数(即前两位数字相等,后两位数字也相等)。【输入】无【输出】由小到大输出,每个数占一行。【输入样例】无【输出样例】无#include<bits/stdc++.h>usingnamespacestd;boolisSquare(intn){ inttmp=(int)sqrt(n......