首页 > 其他分享 >L1-009 N个数求和

L1-009 N个数求和

时间:2024-04-20 11:55:33浏览次数:32  
标签:return int 个数 fenmu Fraction L1 009 fenzi lld

#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
#define ll long long
struct Fraction{
	ll fenzi,fenmu;
};
int gcd(int a,int b){
	if(b==0) return a;
	return gcd(b,a%b);
} 
int lcm(int a,int b){
	return a/gcd(a,b)*b;
}
Fraction reduction(Fraction&a){
	if(a.fenmu<0){
		a.fenmu=-a.fenmu;
		a.fenzi=-a.fenzi;
	}
	if(a.fenzi==0) a.fenmu=1;//分子为0 
	else {
		//分子不是0 进行约分
		ll gy=abs(gcd(a.fenzi,a.fenmu));
		a.fenzi/=gy;
		a.fenmu/=gy; 
	}
	return a;
	
}
Fraction add(Fraction& a,Fraction&b){
	Fraction c;
    c.fenmu=a.fenmu*b.fenmu;
    c.fenzi=a.fenzi*b.fenmu+a.fenmu*b.fenzi;
    return reduction(c);
}
void print(Fraction &a){//分子为正负 分母是正 但是可能是假分式 
	if(a.fenmu==1) printf("%lld",a.fenzi);
	else if(abs(a.fenzi)>abs(a.fenmu))
	   printf("%lld %lld/%lld",a.fenzi/a.fenmu,abs(a.fenzi)%a.fenmu,a.fenmu);
	else printf("%lld/%lld",a.fenzi,a.fenmu);
}
int main(){
	int n;
	cin>>n;
	Fraction a;
	scanf("%lld/%lld",&a.fenzi,&a.fenmu);
	for(int i=1;i<n;i++){
		Fraction b;
		scanf("%lld/%lld",&b.fenzi,&b.fenmu);
		a=add(a,b);
	}
	print(a);
	return 0;
}

标签:return,int,个数,fenmu,Fraction,L1,009,fenzi,lld
From: https://www.cnblogs.com/chengyiyuki/p/18147527

相关文章

  • VKL144C/D LQFP48/SSOP48仪器仪表超低功耗/超省电LCD液晶段码驱动IC适用于分贝仪、测
    VKL144C/D概述:VKL144C/D是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。特点•工......
  • Ubuntu22.04安装PostgreSQL15
    Ubuntu22.04安装PostgreSQL15启用PostgreSQL包存储库sudosh-c'echo"debhttp://apt.postgresql.org/pub/repos/apt$(lsb_release-cs)-pgdgmain">/etc/apt/sources.list.d/pgdg.list'wget-qO-https://www.postgresql.org/media/keys/ACCC4CF8......
  • VKL144C/D LQFP48/SSOP48仪器仪表超低功耗/超省电LCD液晶段码驱动IC: 分贝仪、测光仪
    VKL144C/D概述:VKL144C/D是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。特点•工......
  • quick_sort ——第k个数
    思路:本题就是一个快速排序的模板题,通过对数组中的数字进行从小到大排序,从左到右第k个数,但得注意数组下标是从0开始,所以答案应该是排序后数组下标为k-1如果您还不了解快速排序,请移步这篇文章,https://www.cnblogs.com/expect-999/p/17594345.html#include<iostream>#include......
  • POI2009SLO-Elephants
    #POI#Year2009#贪心#数学建图,对于每个环,有两种可行的方案,是这个环内部操作,需要的代价为\(mi\times(cnt-2)\),\(mi\)为这个环中的最小值,\(cnt\)为这个环的长度还可以用环外的一个点,需要的代价为\(mn\times(cnt+1)+mi\)直接贪心即可//Author:xiaruizeconsti......
  • POI2009LYZ-Ice Skates
    POI#Year2009#线段树#Hall定理考虑实际上是一个二分图匹配问题,那么这个二分图存在匹配当且仅对于\(L\)的任何子集右侧的度数和\(\geq\)左侧的然后线段树维护左侧的区间最大和//Author:xiaruizeconstintN=2e5+10;intn,m,k,d;structsegment_tree{#de......
  • POI2009GAS-Fire Extinguishers
    POI#Year2009#贪心贪心的把灭火器放到深度较小的点上,对于每个点,维护两个数组,记录距离当前点为\(x\)没有覆盖的点有\(a_x\)个,距离当前点\(y\)的灭火器有\(b_y\)个然后在每个点上,合并长度为\(len\)或者\(len-1\)的路径,因为这些路径不能延伸到父节点,所以要在这个点解决......
  • P2161 [SHOI2009] 会场预约
    原题链接题解找出右端点大于等于当前区间的左端点且左端点小于等于当前区间的右端点的所有区间,由于查询前这样的区间具有单调性,所以可以用二分,但是怎么快速删除呢?欸stl大法来了,用set存储区间,查找和删除和添加都是\(logn\)级的code#include<bits/stdc++.h>usingnamespace......
  • 轮播一屏多个数量-匀速向左移动
    引入swiper1.html<divclass="inw-swipper">            <divclass="swiper-container">              <divclass="swiper-wrapper">                <divclass=&......
  • void swap(double& val1,double& val2); 这是什么意思
    voidswap(double&val1,double&val2);这是什么意思?定义了一个叫做swap的函数,它接受两个双精度数的引用作为参数在C++中,&符号用于表示引用。通过传递引用作为参数,函数可以直接修改传递给它的参数的值,而不是创建参数的副本。通过传递引用而不是传递参数的副本,可以避免不必......