N个数求和(PTA)
2024-10-08 10:13:41
这题多输出了一个空格,卡了半天。。。
leetcode刷多了,后遗症
这题可以用scanf("%lld/%lld"),直接读入,不过我用了stoll,也就是stoi,string to int ,把string转int
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
void getNum(long long& s,long long& f,string num) {
long long i=0;
for (auto c:num) {
if (c=='/') {
break;
}
i++;
}
string pre=num.substr(0,i);
string suf=num.substr(i+1);
s=stoll(pre);
f=stoll(suf);
// cout<<s<<endl<<f<<endl;
}
long long gcd(long long a,long long b) {
return a%b==0?b:gcd(b,a%b);
}
void toEasy(long long& s,long long& f) {
long long g=abs(gcd(s,f));
s/=g;
f/=g;
}
int main() {
// freopen("in.txt","r",stdin);
long long n;
cin>>n;
cin.get();
string line;
getline(cin,line);
stringstream ss(line);
string num;
long long s1=0,f1=1,s2,f2;
while (ss>>num) {
getNum(s2,f2,num);
s1*=f2;
s2*=f1;
s1+=s2;
f1*=f2;
toEasy(s1,f1);
}
toEasy(s1,f1);
long long pre=s1/f1;
s1%=f1;
if (pre) {
cout<<pre;
}
if (pre&&s1) {
cout<<" ";
}
//¶àÁËÒ»¸ö¿Õ¸ñ¾Í»á´í
if (pre==0&&s1<0) {
cout<<"-";
}
if (s1) {
printf("%d/%d",abs(s1),f1);
}
if (pre==0&&s1==0) {
printf("0");
}
printf("\n");
return 0;
}
/*
1
1/2 1/2 1/2 1/2
3
-1/2 -1/2 -1/2
*/
最新文章
- Day12-mysql&;&;redis
- PHP 基础(赋值及函数)
- FJNU 1151 Fat Brother And Geometry(胖哥与几何)
- js匿名函數
- Bootstrap之导航栏(2015年-05年-20日)
- prefuse学习(一)用非数据库连接和xml的方式读入数据
- Multipath多路径冗余全解析
- Android学习四、Android中的Adapter
- Oracle性能优化学习笔记WHERE在连接顺序的条款
- springmvc+mybatis 做分页sql 语句
- Python数据描述与分析
- GYM 100608G 记忆化搜索+概率 2014-2015 Winter Petrozavodsk Camp, Andrew Stankevich Contest 47 (ASC 47)
- Webdriver+Testng实现测试用例失败自动截图功能
- SRAM、DRAM、SDRAM、DDR、DDR2、DDR3
- span标签 宽度无效解决方案
- centos7命令2
- C++视频教学
- 【洛谷P3390】矩阵快速幂
- C++ emplace_back
- Java获取字符串里面的重复字符
热门文章
- 《深入理解Java虚拟机》读书笔记九
- EF中的查询方法
- 利用python装饰器为字符串添加,HTML标签
- .Net中C# Dictionary 用法
- 关于真机测试root权限问题
- IntelliJ IDEA 2017.3尚硅谷-----创建的静态 Java Web
- 1015 Reversible Primes
- 矩阵快速幂 F[n]=F[n-2]*2+F[n-1]+i^4 hdu5950
- 调用 url_launcher 模块打开外部浏 览器 打开外部应用 拨打电话 发送短信
- ansible笔记(6):常用模块之系统模块