L1-009 N个数求和

it2023-03-27  74

解题思路: 第一步:定义一个求最大公约数函数(方便约分) 第二步:先输入一个分数,对分子分母进行约分 第三步:使用循环输入剩余的分数,并进行处理 处理分母:lcp=b*d/gcd(b,d); 处理分子:a=a*lcp/b+c*lcp/d; 第四步:分三种情况输出结果 情况一:只有分数 情况二:只有整数 情况三:带分数 #include<stdio.h> typedef long long ll; ll gcd(ll a,ll b) //求最大公约数 { return b==0?a:gcd(b,a%b); } int main() { int n,i=1; ll lcp,a,b,c,d; scanf("%d",&n); scanf("%lld/%lld",&a,&b); int t=gcd(a,b); if(a) //约分 { a/=t; b/=t; } while(i<n) { scanf("%lld/%lld",&c,&d); lcp=b/gcd(b,d)*d; //分母 a=a*lcp/b+c*lcp/d; //分子 b=lcp; int t=gcd(a,b); if(t) { a/=t; b/=t; } i++; } if(a&&a/b==0) //只有分数 printf("%lld/%lld",a%b,b); else if(a%b==0) //只有分母 printf("%lld\n",a/b); else printf("%lld %lld/%lld\n",a/b,a%b,b); return 0; }
最新回复(0)