PAT甲题题解-1081. Rational Sum (20)-模拟分数计算
模拟计算一些分数的和,结果以带分数的形式输出
注意一些细节即可
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
/*
模拟计算一些分数的和,结果以带分数的形式输出
注意一些细节即可
*/
const int maxn=;
const int maxv=; //long int范围实际上就是int的范围,sqrt(int)不超过50000
long long numerator[maxn]; //分子
long long denominator[maxn]; //分母
int n;
int maxexp[maxv];
int prime[maxv];
int cnt=;
int isprime[maxv];
/*
素数筛选法,筛选出素数
*/
void init(){
for(int i=;i<maxn;i++)
isprime[i]=;
isprime[]=;
for(int i=;i<maxv;i++){
if(isprime[i]){
prime[cnt++]=i;
for(int j=i*;j<maxv;j+=i)
isprime[j]=;
}
}
}
/*
分解质因数,顺便用来求LCM
*/
void factor(long long val){
for(int i=;i<cnt && val;i++){
int e=;
while(val%prime[i]==){
e++;
val/=prime[i];
}
maxexp[i]=max(maxexp[i],e); //LCM即为各个项的相同质因数取最大次数
}
//如果val本身是素数
if(val>){
prime[cnt]=val;
maxexp[cnt]=max(maxexp[cnt],);
cnt++;
}
}
long long GCD(long long a,long long b){
if(b==)
return a;
return GCD(b,a%b);
}
int main()
{
init();
memset(maxexp,,sizeof(maxexp));
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%lld/%lld",&numerator[i],&denominator[i]);
factor(denominator[i]);
}
long long lcm=;
for(int i=;i<cnt;i++){
for(int j=;j<maxexp[i];j++)
lcm*=prime[i];
}
long long sum=;
for(int i=;i<n;i++){
sum+=numerator[i]*(lcm/denominator[i]);
}
long long integer=sum/lcm;
long long left=sum%lcm;
if(integer!=)
printf("%lld",integer);
if(left!=){
if(integer!=)
printf(" ");
long long gcd=abs(GCD(left,lcm)); //注意这里要加绝对值,因为GDC(-12,9)=-3
printf("%lld/%lld",left/gcd,lcm/gcd);
}
//若结果为0
if(integer== && left==)
printf("0\n");
return ;
}
PAT甲题题解-1081. Rational Sum (20)-模拟分数计算的更多相关文章
- PAT甲题题解-1088. Rational Arithmetic (20)-模拟分数计算
输入为两个分数,让你计算+,-,*,\四种结果,并且输出对应的式子,分数要按带分数的格式k a/b输出如果为负数,则带分数两边要有括号如果除数为0,则式子中的结果输出Inf模拟题最好自己动手实现,考验 ...
- PAT甲题题解-1042. Shuffling Machine (20)-模拟
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789205.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1096. Consecutive Factors(20)-(枚举)
题意:一个正整数n可以分解成一系列因子的乘积,其中会存在连续的因子相乘,如630=3*5*6*7,5*6*7即为连续的因子.给定n,让你求最大的连续因子个数,并且输出其中最小的连续序列. 比如一个数可 ...
- PAT甲题题解-1108. Finding Average (20)-字符串处理
求给出数的平均数,当然有些是不符合格式的,要输出该数不是合法的. 这里我写了函数来判断是否符合题目要求的数字,有点麻烦. #include <iostream> #include < ...
- PAT甲题题解-1120. Friend Numbers (20)-水题
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789775.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1041. Be Unique (20)-水题
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789189.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1050. String Subtraction (20)-水题
#include <iostream> #include <cstdio> #include <string.h> #include <algorithm&g ...
- PAT甲题题解-1015. Reversible Primes (20)-素数
先判断n是否为素数然后把n转化成d进制下再反转,转化为十进制的num判断num是否为素数 注意n为0和1时,不是素数!!!注意反转后的num也有可能为1,不是素数!!! #include <io ...
- PAT甲题题解-1046. Shortest Distance (20)-做了一个假的最短路,水
一开始以为是最短路,结果是给你一个环,让你求环上两点之间的距离...那还做毛线 然而还是得做毛线 #include <iostream> #include <cstdio> # ...
随机推荐
- DevExpress11、TreeList
一.简介 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...
- String真的是不可变的吗?
你可能问一个人String是可变的吗?想必他们都会一口同生的说String是不可变的,因为String是final修饰的,而且它底层的是final修饰的char[]数组. 可以看到String源码: ...
- swift protocol的几种形式
三个关注点:1.形式:2.实现方式:3.使用方式: 一.基本形式: 形式:内部无泛型类型: 实现:只需指定类型和实现相应的功能即可: 使用:可以用在其他类型出现的任何地方: protocol Resp ...
- maven中distributionManagement
分发构件至远程仓库 mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库.本地Maven仓库的构件只能供当前用户使用, ...
- 欢迎来到Curl的世界
一.Curl 简介 curl命令是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是 综合传输工具,但按传统,习惯称curl为下载工具.作为一款强力工具,curl支持包括H ...
- 测试udp服务的端口是否可用
测试tcp服务的端口是否可用,可以使用: telnet ip port 但是如果这个用在upd服务上,就会报错, 因为telnet走的是tcp协议, 比如说192.168.80.131在8888端 ...
- js中获取url后面的参数值
方法: //获取url路径?号后面的参数值.function GetRequest() { var url = location.search; //获取url中"?"符后的字串 ...
- OpenCV——归一化函数normalize
函数原型: void cv::normalize(InputArry src,InputOutputArray dst,double alpha=1,double beta=0,int norm_ty ...
- STL 1–迭代器std::begin()和std::end()使用
迭代器是一个行为类似于指针的模板类对象.只需要迭代器iter指向一个有效对象,就可以通过使用*iter解引用的方式来获取一个对象的引用.通常会使用一对迭代器来定义一段元素,可以是任意支持迭代器对象的元 ...
- Block abstraction view(Create & Reference)
在hierarchical design 中,一般需要调用 hard macro,top调用 macro 的方法有多种: 1. 调用macro对应的db 2. 调用 macro 的 ilm 模型(20 ...