*浙大PAT甲级 1081
来源:互联网 发布:信阳烟草网络 编辑:程序博客网 时间:2024/05/01 09:23
题目不难,但是需要注意的细节很多,尤其是 long long虽然数的范围在int内,但是求最小公倍数时,相乘会超出int范围,因此用long long;
AC代码:
#include<iostream>#include<map>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>#include<list>#include<set>#include<stack>#include<cmath>#include<vector>#define inf 999999999using namespace std;long long gcd(long long x,long long y){ return x%y==0?y:gcd(y,x%y);}long long f(long x,long y){ return x*y/gcd(x,y);}int main(){ long long n; scanf("%d",&n); long long fenzi=0; long long fenmu=1; //cout<<fenzi<<" "<<fenmu<<endl; for(int i=0;i<n;i++) { string s; cin>>s; long long tmp1=0; long long tmp2=0; int flag1=0; if(s[0]=='-') { flag1=1; s.erase(0,1); } int j; for(j=0;j<s.size();j++) { if(s[j]=='/') break; tmp1*=10; tmp1+=s[j]-'0'; } tmp1=flag1==1?-tmp1:tmp1; for(int r=j+1;r<s.size();r++) { tmp2*=10; tmp2+=s[r]-'0'; } long long gg=f(fenmu,tmp2); //cout<<gg<<endl; fenzi=fenzi*gg/fenmu; tmp1=tmp1*gg/tmp2; fenmu=gg; fenzi=fenzi+tmp1; if(fenzi==0) { fenmu=1; continue; } long long fac=gcd(fenmu,fenzi); //cout<<fac<<endl; fenmu=fenmu/fac; fenzi=fenzi/fac; //cout<<fenzi<<" "<<fenmu<<endl; } if(fenmu==1) { if(fenzi<0) { printf("-%lld",-fenzi); } else { printf("%lld",fenzi); } } else { if(fenzi/fenmu==0) { printf("%lld/%lld",fenzi,fenmu); } else { int d=fenzi/fenmu; printf("%lld %lld/%lld",d,fenzi-d*fenmu,fenmu); } }}
0 0
- *浙大PAT甲级 1081
- 浙大pat甲级 1023
- 浙大pat甲级 1024
- 浙大pat甲级 1025
- 浙大PAT甲级 1026
- 浙大PAT甲级 1028
- 浙大PAT甲级 1029
- 浙大PAT甲级 1030
- 浙大PAT甲级 1031
- 浙大PAT甲级 1032
- 浙大PAT甲级 1033
- 浙大PAT甲级 1035
- 浙大PAT甲级 1037
- 浙大PAT甲级 1039
- 浙大PAT甲级 1040
- 浙大PAT甲级 1038
- 浙大PAT甲级 1041
- 浙大PAT甲级 1042
- 167. Two Sum II - Input array is sorted
- JavaSE Swing Menu
- 大数据Spark“蘑菇云”行动-第12课:Scala函数式编程进阶(匿名函数、高阶函数、函数类型推断、Currying)与Spark源码鉴赏
- awk按照某个字段排列,求某个列的最大值最小值
- 中文分词比较困难的句子
- *浙大PAT甲级 1081
- memcache集群的安装和配置
- pdf文件太大?看pdf压缩大小的方法吧
- android 介绍Retrofit的简单使用
- U盘安装win7+linux(centos)双系统详细教程
- 引入css的方法有哪些? 不仅仅是外部引用,内部引用,等
- 网站
- 根据产品的成熟度确定测试策略
- Java发送包含网络和本地图片的HTML邮件