PAT1034
本题要求编写程序,计算2个有理数的和、差、积、商。
输入格式:
- # include<iostream>
- # include<algorithm>
- # include<stdio.h>
- # include<string>
- using namespace std;
- bool ISint(int a,int b)
- {
- double c = a*1.0 / b;
- if(c - (int)c == )
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- int gcd(int a,int b)//a da
- {
- int t;
- if(a<b)
- {
- t=a;a=b;b=t;
- }
- if(b==)
- {
- return ;
- }
- else
- {
- while(b!=)
- {
- t = a % b;
- a = b;
- b = t;
- }
- return a;
- }
- }
- int gbs(int x,int y)
- {
- return (x*y)/gcd(x,y);
- }
- void printhe(int he,int gb,int a1,int b1,int a2,int b2)
- {
- if( ISint(a1,b1) && a1>=)
- {
- cout<<a1/b1;
- }
- else if(ISint(a1,b1) && a1< )
- {
- cout<<"("<<a1/b1<<")";
- }
- else if(!ISint(a1,b1) && a1>=)
- {
- int t1 = gcd(a1,b1);
- a1 = a1 /t1;
- b1 = b1 /t1;
- if(a1>b1)
- {
- int k1=;
- while(a1>b1)
- {
- a1 = a1 - b1;
- k1++;
- }
- cout<<k1<<" "<<a1<<"/"<<b1;
- }
- else
- {
- cout<<a1<<"/"<<b1;
- }
- }
- else
- {
- a1 = -a1;
- int t1 = gcd(a1,b1);
- a1 = a1 /t1;
- b1 = b1 /t1;
- if(a1>b1)
- {
- int k1=;
- while(a1>b1)
- {
- a1 = a1 - b1;
- k1++;
- }
- cout<<"(-"<<k1<<" "<<a1<<"/"<<b1<<")";
- }
- else
- {
- cout<<"(-"<<a1<<"/"<<b1<<")";
- }
- }
- cout<<" + ";
- if( ISint(a2,b2) && a2>=)
- {
- cout<<a2/b2;
- }
- else if(ISint(a2,b2) && a2< )
- {
- cout<<"("<<a2/b2<<")";
- }
- else if(!ISint(a2,b2) && a2>=)
- {
- int t2 = gcd(a2,b2);
- a2 = a2 /t2;
- b2 = b2 /t2;
- if(a2>b2)
- {
- int k2=;
- while(a2>b2)
- {
- a2 = a2 - b2;
- k2++;
- }
- cout<<k2<<" "<<a2<<"/"<<b2;
- }
- else
- {
- cout<<a2<<"/"<<b2;
- }
- }
- else
- {
- a2 = -a2;
- int t2 = gcd(a2,b2);
- a2 = a2 /t2;
- b2 = b2 /t2;
- if(a2>b2)
- {
- int k2=;
- while(a2>b2)
- {
- a2 = a2 - b2;
- k2++;
- }
- cout<<"("<<-k2<<" "<<a2<<"/"<<b2<<")";
- }
- else
- {
- cout<<"(-"<<a2<<"/"<<b2<<")";
- }
- }
- cout<<" = ";
- if(he>=)
- {
- if(ISint(he,gb))
- {
- cout<<he;
- }
- else
- {
- int t = gcd(he,gb);
- he = he /t;
- gb = gb /t;
- if(he>gb)
- {
- int k=;
- while(he>gb)
- {
- he = he - gb;
- k++;
- }
- cout<<k<<" "<<he<<"/"<<gb;
- }
- else
- {
- cout<<he<<"/"<<gb;
- }
- }
- }
- else
- {
- he = - he;
- if(ISint(he,gb))
- {
- cout<<"(-"<<he/gb<<")";
- }
- else
- {
- int t = gcd(he,gb);
- he = he /t;
- gb = gb /t;
- if(he>gb)
- {
- int k=;
- while(he>gb)
- {
- he = he - gb;
- k++;
- }
- cout<<"("<<-k<<" "<<he<<"/"<<gb<<")";
- }
- else
- {
- cout<<"("<<-he<<"/"<<gb<<")";
- }
- }
- }
- cout<<endl;
- }
- void printcha(int cha,int gb,int a1,int b1,int a2,int b2)
- {
- if( ISint(a1,b1) && a1>=)
- {
- cout<<a1/b1;
- }
- else if(ISint(a1,b1) && a1< )
- {
- cout<<"("<<a1/b1<<")";
- }
- else if(!ISint(a1,b1) && a1>=)
- {
- int t1 = gcd(a1,b1);
- a1 = a1 /t1;
- b1 = b1 /t1;
- if(a1>b1)
- {
- int k1=;
- while(a1>b1)
- {
- a1 = a1 - b1;
- k1++;
- }
- cout<<k1<<" "<<a1<<"/"<<b1;
- }
- else
- {
- cout<<a1<<"/"<<b1;
- }
- }
- else
- {
- a1 = -a1;
- int t1 = gcd(a1,b1);
- a1 = a1 /t1;
- b1 = b1 /t1;
- if(a1>b1)
- {
- int k1=;
- while(a1>b1)
- {
- a1 = a1 - b1;
- k1++;
- }
- cout<<"("<<-k1<<" "<<a1<<"/"<<b1<<")";
- }
- else
- {
- cout<<"(-"<<a1<<"/"<<b1<<")";
- }
- }
- cout<<" - ";
- if( ISint(a2,b2) && a2>=)
- {
- cout<<a2/b2;
- }
- else if(ISint(a2,b2) && a2< )
- {
- cout<<"("<<a2/b2<<")";
- }
- else if(!ISint(a2,b2) && a2>=)
- {
- int t2 = gcd(a2,b2);
- a2 = a2 /t2;
- b2 = b2 /t2;
- if(a2>b2)
- {
- int k2=;
- while(a2>b2)
- {
- a2 = a2 - b2;
- k2++;
- }
- cout<<k2<<" "<<a2<<"/"<<b2;
- }
- else
- {
- cout<<a2<<"/"<<b2;
- }
- }
- else
- {
- a2 = -a2;
- int t2 = gcd(a2,b2);
- a2 = a2 /t2;
- b2 = b2 /t2;
- if(a2>b2)
- {
- int k2=;
- while(a2>b2)
- {
- a2 = a2 - b2;
- k2++;
- }
- cout<<"("<<-k2<<" "<<a2<<"/"<<b2<<")";
- }
- else
- {
- cout<<"(-"<<a2<<"/"<<b2<<")";
- }
- }
- cout<<" = ";
- if(cha>=)
- {
- if(ISint(cha,gb))
- {
- cout<<cha;
- }
- else
- {
- int t = gcd(cha,gb);
- cha = cha /t;
- gb = gb /t;
- if(cha>gb)
- {
- int k=;
- while(cha>gb)
- {
- cha = cha - gb;
- k++;
- }
- cout<<k<<" "<<cha<<"/"<<gb;
- }
- else
- {
- cout<<cha<<"/"<<gb;
- }
- }
- }
- else
- {
- cha = - cha;
- if(ISint(cha,gb))
- {
- cout<<"(-"<<cha/gb<<")";
- }
- else
- {
- int t = gcd(cha,gb);
- cha = cha /t;
- gb = gb /t;
- if(cha>gb)
- {
- int k=;
- while(cha>gb)
- {
- cha = cha - gb;
- k++;
- }
- cout<<"("<<-k<<" "<<cha<<"/"<<gb<<")";
- }
- else
- {
- cout<<"("<<-cha<<"/"<<gb<<")";
- }
- }
- }
- cout<<endl;
- }
- int main()
- {
- int a1,a2,b1,b2;
- scanf("%d/%d %d/%d",&a1,&b1,&a2,&b2);
- int gb,gy,he,cha;
- gb = gbs(b1,b2);
- he = a1 * gb / b1 + a2 * gb / b2;
- cha = a1 * gb / b1 - a2 * gb / b2;
- printhe(he,gb,a1,b1,a2,b2);
- printcha(cha,gb,a1,b1,a2,b2);
- return ;
- }
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。
输出格式:
分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分;若为负数,则须加括号;若除法分母为0,则输出“Inf”。题目保证正确的输出中没有超过整型范围的整数。
输入样例1:
- 2/3 -4/2
输出样例1:
- 2/3 + (-2) = (-1 1/3)
- 2/3 - (-2) = 2 2/3
- 2/3 * (-2) = (-1 1/3)
- 2/3 / (-2) = (-1/3)
输入样例2:
- 5/3 0/6
输出样例2:
- 1 2/3 + 0 = 1 2/3
- 1 2/3 - 0 = 1 2/3
- 1 2/3 * 0 = 0
- 1 2/3 / 0 = Inf
PAT1034的更多相关文章
- PAT1034;Head of a Gang
1034. Head of a Gang (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue One wa ...
- PAT1034. Head of a Gang ——离散化+并查集
题意:成员A与成员B通话 ,成员B与成员C通话,则 ABC即为一个团伙,一共有若干个团伙,每个团伙的人数大于2且相互通话时间超过一定值即为黑帮,每个黑帮伙里有一个BOSS,boss是与各个成员打电话最 ...
- pat1034. Head of a Gang (30)
1034. Head of a Gang (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue One wa ...
- PAT1034 有理数四则运算 (20分)
1034 有理数四则运算 (20分) 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全 ...
随机推荐
- Codeforces 802I Fake News (hard)
Codeforces 802I 题意:统计所有不同子串出现次数的平方的和. 想法:建一个SAM,$Ans=\sum (step[i]-step[fa[i]])*right[i]^2$ #include ...
- 修改CAS实现控制某个用户在定义的时间内登录次数
思想: 在数据库增加字段 1.登录次数 2.登录失败时间(类型TimeStamp) 当一个用户进来认证的时候当登录失败的时候更新登录次数 和最后登录失败的时间. 主要是在登录成功或者失败的时候判断时 ...
- xtarbackup恢复
xbstream -x < ynhw-mysql-slave.01.mysql.prod.sg_fullbak_20180326134255.xbstream -C /data/mysql cd ...
- 无效的 JSON 基元 解决办法
在AJAX中进行如下修改: 加入: dataType: "json", 移除: contentType: 'application/json', 然后检查参数名称,类型是否符合后台 ...
- PAT (Advanced Level) Practise - 1095. Cars on Campus (30)
http://www.patest.cn/contests/pat-a-practise/1095 Zhejiang University has 6 campuses and a lot of ga ...
- Spring学习记录(三)
一.AOP的整理总结 aop面向切面编程 横向重复代码,纵向抽取 动态代理 1.通过动态代理可以体现aop思想 2.为什么要哦用动态代理:对目标对象中的方法进行增强 spring aop开发 spri ...
- Finders Keepers-freecodecamp算法题目
Finders Keepers 1.要求 写一个 function,它遍历数组 arr,并返回数组中第一个满足 func 返回值的元素. 举个例子,如果 arr 为 [1, 2, 3],func 为 ...
- 在windows server 2008 64位服务器上配置php环境
1.安装windows2008 R2 46位 安装2008 R2 关键步骤,网上有很多诸如此类的安装介绍.在些南昌网站建设公司百恒网络工程师就不作详细介绍.关键是要选择适合实际应用的部署. 2. ...
- 数据存储之使用MongoDB数据库存储数据
安装MongoDB环境: 1.官网下载:https://www.mongodb.com/download-center#community 2.MongoDB可视化工具compass下载https:/ ...
- Java开发学生管理系统
Java 学生管理系统 使用JDBC了链接本地MySQL 数据库,因此在没有建立好数据库的情况下没法成功运行 (数据库部分, Java界面部分, JDBC部分) 资源下载: http://downlo ...