L1-009 N个数求和

男娘i 2022-03-16 00:52 364阅读 0赞

L1-009 N个数求和 (20 分)

本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。

输入格式:

输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。

输出格式:

输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。

输入样例1:

  1. 5
  2. 2/5 4/15 1/30 -2/60 8/3

输出样例1:

  1. 3 1/3

输入样例2:

  1. 2
  2. 4/3 2/3

输出样例2:

  1. 2

输入样例3:

  1. 3
  2. 1/3 -1/6 1/8

输出样例3:

  1. 7/24

一开始没有开LL,少了3分… 简单的通分再约一下就可以了~

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<math.h>
  4. #include<iostream>
  5. #include<string>
  6. #include<algorithm>
  7. #include<map>
  8. #include<set>
  9. #include<queue>
  10. #include<stack>
  11. #include<vector>
  12. using namespace std;
  13. #define inf 0x3f3f3f3f
  14. #define LL long long
  15. LL gcd(LL x,LL y)
  16. {
  17. return x%y?gcd(y,x%y):y;
  18. }
  19. LL lcm(LL x,LL y)
  20. {
  21. return x*y/gcd(x,y);
  22. }
  23. int main()
  24. {
  25. LL n,i,j,a[105],b[105],s=1,sum=0;
  26. scanf("%lld",&n);
  27. for(i=1;i<=n;i++)
  28. {
  29. scanf("%lld/%lld",&a[i],&b[i]);
  30. s=lcm(s,b[i]);
  31. }
  32. //printf("%d\n",s);//最小公倍数
  33. for(i=1;i<=n;i++)
  34. {
  35. a[i]=a[i]*(s/b[i]);
  36. sum+=a[i];
  37. }
  38. if(sum%s==0)
  39. printf("%lld\n",sum/s);
  40. else if(sum<s)
  41. printf("%lld/%lld\n",sum/gcd(sum,s),s/gcd(sum,s));
  42. else
  43. {
  44. LL sum2=sum-sum/s*s;
  45. printf("%lld %lld/%lld\n",sum/s,sum2/gcd(sum2,s),s/gcd(sum2,s));
  46. }
  47. }

发表评论

表情:
评论列表 (有 0 条评论,364人围观)

还没有评论,来说两句吧...

相关阅读

    相关 L1-009 N个数求和 (20 分)

    N个数求和 (20 分) 本题的要求很简单,就是求`N`个数字的和。麻烦的是,这些数字是以有理数`分子/分母`的形式给出的,你输出的和也必须是有理数的形式。 输入格式

    相关 N个数求和

    本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。 输入格式: 输入第一行给出一个正整数N(≤1

    相关 N个数求和 (20 分)

    本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。 输入格式 输入第一行给出一个正整

    相关 L1-009. N个数求和

    本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数“分子/分母”的形式给出的,你输出的和也必须是有理数的形式。 输入格式: 输入第一行给出一个正整数N(<=

    相关 L1-009 N个数求和

    L1-009 N个数求和 (20 分) 本题的要求很简单,就是求`N`个数字的和。麻烦的是,这些数字是以有理数`分子/分母`的形式给出的,你输出的和也必须是有理数的形式。