PAT L1-009. N个数求和 模拟
来源:互联网 发布:php面试常用函数大全 编辑:程序博客网 时间:2024/05/12 16:45
题目链接:https://www.patest.cn/contests/gplt/L1-009
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>using namespace std;#define INF 0x3f3f3f3ftypedef long long ll;typedef struct node{ ll a,b;}fraction;ll gcd(ll a,ll b){ if(b==0) return a; else return gcd(b,a%b);}ll lcm(ll a,ll b){ ll tmp=gcd(a,b); return a*(b/tmp);}int main(){ int n; while(cin>>n){ fraction sum; int flag1=0; //结果是否有整数部分 int flag2=0; //结果是否为负数 scanf("%lld/%lld",&sum.a,&sum.b); for(int i=0;i<n-1;i++){ ll a,b; scanf("%lld/%lld",&a,&b); ll fm=lcm(sum.b,b); ll fz=sum.a*(fm/sum.b)+a*(fm/b); sum.a=fz; sum.b=fm; } ll fz=sum.a,fm=sum.b; if(!fz) //结果为0的情况 printf("0"); if(fz/fm){ printf("%lld",fz/fm); flag1=1; } if(fz<0){ flag2=1; fz=-fz; } if(fz%fm){ fz=fz%fm; ll tmp=gcd(fz,fm); if(flag1) printf(" "); if(!flag1&&flag2) printf("-");//没有整数部分但分数部分为负的情况 printf("%lld/%lld",fz/tmp,fm/tmp); } printf("\n"); } return 0;}
0 0
- PAT L1-009. N个数求和 模拟
- Java - PAT - L1-009. N个数求和
- PAT L1-009. N个数求和
- PAT-L1-009. N个数求和
- PAT L1-009. N个数求和 分数求和 struct重载
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- L1-009. N个数求和
- EasyDarwin 手机直播
- TextView的垂直滚动效果
- android 性能分析(转)
- 【js】关于 setTimeout(0)所引发的……
- 深入理解javascript函数
- PAT L1-009. N个数求和 模拟
- Maven之使用Junit测试Maven Project
- printf 和 scanf 的使用
- 解决centos下apache不区分路径大小写问题
- Android Studio中获得SHA1的方法
- [UnityShader3]局部动态效果
- Solution: Smart Pointer Parameters
- 【OpenCV笔记 05】OpenCV插入文本和字体设置相关函数
- android中的ASimpleCache缓存