PAT Basic 1034
1034 有理数四则运算
本题要求编写程序,计算2个有理数的和、差、积、商。
输入格式:
输入在一行中按照“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
题解:这道题看起来蛮复杂的,不过没有啥陷阱,直接写就好了。
知识点复习:
int gcd(int a, int b){
if (a%b == ) {
return b;
}
return gcd(b, a%b);
}
辗转相除法求最大公因数要记牢
代码如下:
#include<iostream> using namespace std;
/*辗转相除法*/
int gcd(int a, int b){
if (a%b == ) {
return b;
}
return gcd(b, a%b);
}
/*输出化简后的数 */
void f( long long int a, long long int b){
int k = , ac = , c = ;
if( a == ){
printf("");
return ;
}
if(a < ) {
ac = ;
a = -a;
}
if( a/b >= ){
k = a/b;
a = a%b;
if(!ac) k = -k;
}
if( a!= ){
c = gcd(a,b);
while( c != ){
a = a/c;
b = b/c;
c = gcd(a,b);
}
}
if(!ac) printf("(");
if(k) printf("%d",k);
if(a) {
if(k) printf(" ");
if(!ac && !k)
printf("%lld/%lld",-a,b);
else
printf("%lld/%lld",a,b);
}
if(!ac) printf(")");
} int main()
{
long long int a1, a2, b1, b2, c1, c2;
scanf("%lld/%lld %lld/%lld",&a1,&a2,&b1,&b2);
c1 = a1*b2 + a2*b1;
c2 = a2*b2;
f(a1,a2);
printf(" + ");
f(b1,b2);
printf(" = ");
f(c1,c2);
printf("\n");
c1 = a1*b2 - a2*b1;
c2 = a2*b2;
f(a1,a2);
printf(" - ");
f(b1,b2);
printf(" = ");
f(c1,c2);
printf("\n");
c1 = a1*b1;
c2 = a2*b2;
f(a1,a2);
printf(" * ");
f(b1,b2);
printf(" = ");
f(c1,c2);
printf("\n");
c1 = a1*b2;
c2 = a2*b1;
if( c2 < ){
c1 = -c1;
c2 = -c2;
}
f(a1,a2);
printf(" / ");
f(b1,b2);
printf(" = ");
if(b1){
f(c1,c2);
}
else cout<<"Inf";
return ;
}
PAT Basic 1034的更多相关文章
- PAT Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]
题目 本题要求编写程序,计算2个有理数的和.差.积.商. 输⼊格式: 输⼊在⼀⾏中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...
- PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)
PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20) http://www.patest.cn/contests/pat-b-practise/1034 ...
- PAT甲级1034. Head of a Gang
PAT甲级1034. Head of a Gang 题意: 警方找到一个帮派的头的一种方式是检查人民的电话.如果A和B之间有电话,我们说A和B是相关的.关系的权重被定义为两人之间所有电话的总时间长度. ...
- PAT Basic 1057
1057 数零壹 给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有 ...
- PAT (Basic Level) Practise (中文)-1039. 到底买不买(20)
PAT (Basic Level) Practise (中文)-1039. 到底买不买(20) http://www.patest.cn/contests/pat-b-practise/1039 小红 ...
- PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20)
PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20) http://www.patest.cn/contests/pat-b-practise/1 ...
- PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)
PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...
- PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)
PAT (Basic Level) Practise (中文)-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 ...
- PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)
PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15) http://www.patest.cn/contests/pat-b-practise/10 ...
随机推荐
- 使用express+mongoDB搭建多人博客 学习(6)发表文章
发表文章 1.在modules文件夹下新建post.js var mongodb=require("./db"); function Post(name,title,post){ ...
- 使用express+mongoDB搭建多人博客 学习(4)登录与登出
登录 修改index.ejs <%- include header %> <% if(locals.error){ %> <span><%= locals.e ...
- Connection conn = DriverManager.getConnection("jdbc:odbc:bbs");
Connection conn = DriverManager.getConnection("jdbc:odbc:bbs"); 这是JDBC连接数据库的时候用的一句话,,Conne ...
- Asp.Net实现记录历史访问人数和当前在线人数
************************************在Global.asax中如下************************ <%@ Import Namespace= ...
- jvm内存溢出的三种情况以及解决办法
1 前言相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深 ...
- 五、UML类图和六大原则-----《大话设计模式》
一.单一职责原则 就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力.这种耦合 ...
- hihocoder1032 最长回文子串
思路: manacher模板. 实现: #include <iostream> #include <cstring> using namespace std; ]; strin ...
- Linux下各文件夹的结构说明及用途介绍(转载)
linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...
- java冒泡排序和快速排序代码
冒泡排序: package nicetime.com; //基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,// 让较大的数往下沉,较小的往上 ...
- Oracle种常用性能监控SQL语句
--Oracle常用性能监控SQL语句 --1 SELECT * FROM SYS.V_$SQLAREA WHERE DISK_READS > 100; --2 监控事例的等待 SELECT E ...