当前位置: 首页 > article >正文

N个数求和

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

输入格式:

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

输出格式:

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

输入样例1:

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

输出样例1:

3 1/3

输入样例2:

2
4/3 2/3

输出样例2:

2

 

#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int gcd(int a,int b)
{
    if(b==0)
        return a;
    else
        return gcd(b,a%b);
}

int main()
{
    int n,i,nume,deno,a,b,g;                 //分子numertor,分母denominator
    scanf("%d %d/%d",&n,&nume,&deno);     //读入分数的个数和第一个分数,便于和后面的分数相加
    for(i=0;i<n-1;i++)
    {
        scanf("%d/%d",&a,&b);
        nume=nume*b+deno*a;                   //通分,第一个分数与后面n-1个分数相加
        deno*=b;
        g=gcd(abs(nume),abs(deno));            //利用最大公因数化简分数
        nume/=g;                        
        deno/=g;
    }
    if(abs(nume)<deno&&nume!=0)            //真分数的情况(题意中分母始终是正数)
        printf("%d/%d",nume,deno);
    else if(nume%deno==0)                   //满足分子等于分母和分子等于零,即为整数的情况
        printf("%d",nume/deno);
    else
    printf("%d %d/%d",nume/deno,nume%deno,deno);
}

 


http://www.kler.cn/news/161805.html

相关文章:

  • 时间片轮转调度算法
  • 【CMake入门】第四节——静态库和共享库及安装、使用库的流程
  • [足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-6复数Complex Number
  • mysql中information_schema.tables字段说明
  • Linux UUCP命令教程:如何在Linux系统中进行文件复制(附实例详解和注意事项)
  • 12.7作业
  • 【数据库】树形数据组织架构下的封锁并发控制,B树索引并发访问控制,树协议原理及案例分析
  • 【python爬虫】设计自己的爬虫 3. 文件数据保存封装
  • 『 C++ 』BinarySearchTree搜索二叉树
  • CA证书格式详解
  • SpringSecurity安全授权
  • 使用阿里巴巴同步工具DataX实现Mysql与ElasticSearch(ES)数据同步
  • Django回顾【五】
  • 折半查找(数据结构实训)
  • 用PHP和HTML做登录注册操作数据库Mysql
  • Appium获取toast方法封装
  • 套接字通信类的封装
  • 【计算机网络实验】实验三 IP网络规划与路由设计(头歌)
  • MySQL 中Relay Log打满磁盘问题的排查方案
  • 98基于matlab的在MIMO通信系统中功率优化算法的仿真
  • 再识二叉树
  • 第55天:django学习(四)
  • 26.Python 网络爬虫
  • MATLAB - 绘制立体图(平面+水深)
  • 基于Amazon Bedrock介绍大语言模型
  • 分布式训练类的定义以及创建分布式模型
  • QT 重定向qdebug输出到自绘界面
  • 区分node,npm,nvm
  • uni-app实现安卓原生态调用身份证阅读器读卡库读身份证和社保卡、银行卡、IC卡等功能
  • 匹配不包含同时出现两次 “ago“ 的行