pat乙级1034
1.vs2013不能用scanf,改为scanf_s,但是提交时不能用scanf_s,用scanf。。。
scanf_s("%lld/%lld %lld/%lld", &a[], &a[], &b[], &b[]);
2.c++中数组作为函数参数时传递的是地址,会改变实参的值。
3.用printf输出string型变量时要加上“.c_str()”:
printf("%s + %s = %s\n", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());
4.类型别名:
using LL = long long;
相乘时可能会超出整型范围,用long long。
代码:
#include <iostream>
#include <string>
using namespace std;
using LL = long long;//类型别名 LL gcd(LL a, LL b)
{
if (b == )
return a;
return gcd(b, a % b);
} string simple(LL a[])
{
LL m = a[], n = a[];
if (n < )
{
m = -m;
n = -n;
}
string s;
char c;
if (m < )
{
m = -m;
c = '-';
}
else c = '+'; LL g = gcd(m, n);//分子分母最大公约数
m = m / g;
n = n / g; LL r = m % n;
LL k = m / n;
if (k) s = to_string(k);
if (r && k) s += " ";
if (r) s = s + to_string(r) + "/" + to_string(n);
if (!k && !r) s = ""; if (c == '-') s = "(-" + s + ")";
return s;
}
void add(LL a[], LL b[])
{
LL r[];
r[] = a[] * b[] + b[] * a[];
r[] = a[] * b[];
printf("%s + %s = %s\n", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());
}
void sub(LL a[], LL b[])
{
LL r[];
r[] = a[] * b[] - b[] * a[];
r[] = a[] * b[];
printf("%s - %s = %s\n", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());
}
void motify(LL a[], LL b[])
{
LL r[];
r[] = a[] * b[];
r[] = a[] * b[];
printf("%s * %s = %s\n", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());
}
void divide(LL a[], LL b[])
{
LL r[];
r[] = a[] * b[];
r[] = a[] * b[];
if (r[])
printf("%s / %s = %s\n", simple(a).c_str(), simple(b).c_str(), simple(r).c_str());
else
printf("%s / %s = Inf\n", simple(a).c_str(), simple(b).c_str());
}
int main()
{
LL a[], b[];
scanf_s("%lld/%lld %lld/%lld", &a[], &a[], &b[], &b[]); add(a, b);
sub(a, b);
motify(a, b);
divide(a, b); return ;
}
pat乙级1034的更多相关文章
- PAT乙级1034. 有理数四则运算(20)
本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分 ...
- PAT乙级 1034
思路:是个水题,但是有坑.不能被题目忽悠了,题目保证正确的输出中没有超过整型范围的整数. 它只是保证结果不超出int,但是我们在运算过程中的乘法可能会超出int,直接把所有int改成long long ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- PAT甲级1034. Head of a Gang
PAT甲级1034. Head of a Gang 题意: 警方找到一个帮派的头的一种方式是检查人民的电话.如果A和B之间有电话,我们说A和B是相关的.关系的权重被定义为两人之间所有电话的总时间长度. ...
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- PAT 乙级 1017
题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...
- PAT 乙级 1015
题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...
- PAT 乙级 1003
题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...
随机推荐
- SQL Server修改主、外键和约束
0.创建表 create table Users ( Id int, Name ), Phone ), Email ), Role_Id uniqueidentifier ) go create ta ...
- 用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)
项目中遇到客户的需求变化,要验证某个数据的正确性,判断输入的两位字符,第一位是数字16进制的,第二位是I.O.Q.U除外的字母(A到Z). 本来对js不熟练,网上参考了一下js正则验证的规则,使用正则 ...
- PAT1098【插入排序+堆排序】
简单插入排序: 简单插入排序的核心思想: 把一条这么个难看的序列默认分为两个排好序的和未排好序的两个部分: 所以一开始排好序的只有一个a[0](好看的只有一个),难看的有N(数组长度)-1个a[1,n ...
- vs.net远程调试
有些时候,不能在本机器启动程序进行调试,例如调试全屏模式,或者调试那些需要在特定运行环境的程序,这时候就只能进行远程调试了. 一般的调试器都支持远程调试,vs也不例外.只需要在远程机器上启动一个应用程 ...
- 说一说solr在tomcat,jetty上的运行和安装优缺点
本文是我从别的文章中组合而成的,结合自己实际操作进行了修改. Solr是什么 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lu ...
- CLR Via C#: CLR 的执行模型
CLR(Common Language Runtime)公共语言运行时:是一个可由多种编程语言使用的“运行时”. 编译源代码文件的过程: C# 源代码文件 -> C# 编译器->托管模块( ...
- day13列表推导式作业详解
1.day13题目 2,用列表推导式做下列小题 (1)过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 (2)求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表 (3)求M ...
- linux限制内存和磁盘使用
一.如何限制用户的磁盘空间 1. 查看系统中所有用户的磁盘空间配额 sudo repquota /dev/vda1 2. 查看某个用户的磁盘空间配额 sudo edquota user_name 要想 ...
- (二)异步解决方案之callback
回调定义 就是一个函数里面使用 作为参数的函数. Function1(Function2) { Function2(); }; 同步调用 - 老实说,这和我们 不将代码封装成 函数没有差别 也就是说 ...
- LDAP--对某些AD属性值是字节数组byte[]情况的类型转换方法
//BitConverter.ToBoolean((searchResult.Properties["mDBUseDefaults"][0] as byte[]), 0); row ...