BUCT-2021年ACM竞赛班训练(六)2021.4.29-问题 C:女神的考验-题解
传送门
- 女神的考验
- 题目描述
- 输入描述
- 输出描述
- 样例一
- 输入
- 输出
- 题目分析
- 注意事项
- AC代码
女神的考验
传送门
时间限制:1秒
空间限制:128M
题目描述
星空点点,墨日曜淡。世界芳华灼灼,不及眼前的她。
你只用了几毫秒就得到了小L想要的答案,小L为此惊叹于计算机的算力,他天真地以为,计算机就是一步一步地计算下去才得到答案的。
不知道上面在说什么请点我
女神会心一笑,甩给小L一道题:
给你一个十进制正数,总共不超过 15 15 15位。让你把他转换成 a 1 + 1 a 2 + 1 a 3 + 1 a 4 + 1 ⋯ a_1+\frac{1}{a_2+\frac{1}{a_3+\frac{1}{a_4+\frac{1}{\cdots}}}} a1+a2+a3+a4+⋯1111的形式。
在此,我们只关注 a 1 、 a 2 、 a 3 、 a 4 、 ⋯ a_1、a_2、a_3、a_4、\cdots a1、a2、a3、a4、⋯,小L只需要依次回答这些 a a a即可。
如: 1.3125 = 1 + 1 3 + 1 5 1.3125=1+\frac{1}{3+\frac{1}{5}} 1.3125=1+3+511,小L只需要回答1 3 5
即可。
输入描述
给你一个十进制的正数 n n n,其中 n n n的位数不超过 15 15 15位(即,小数点前后出现的单个数字的个数之和小于15)
输出描述
你需要把这个数转换成 a 1 + 1 a 2 + 1 a 3 + 1 a 4 + 1 ⋯ a_1+\frac{1}{a_2+\frac{1}{a_3+\frac{1}{a_4+\frac{1}{\cdots}}}} a1+a2+a3+a4+⋯1111的形式,并输出 a 1 a 2 a 3 ⋯ a n a_1\ a_2\ a_3\ \cdots\ a_n a1 a2 a3 ⋯ an,它们之间用一个空格隔开。
样例一
输入
1.3125
输出
1 3 5
题目分析
题目给的数据不一定是整数,故可先将小数化为整数: 1.3125 = 13125 10000 = 21 16 1.3125=\frac{13125}{10000}=\frac{21}{16} 1.3125=1000013125=1621
然后将假分数化为带分数: 21 16 = 1 + 5 16 \frac{21}{16}=1+\frac{5}{16} 1621=1+165
其中 5 16 = 1 16 5 \frac{5}{16}=\frac{1}{\frac{16}{5}} 165=5161,即 21 16 = 1 + 5 16 = 1 + 1 16 5 \frac{21}{16}=1+\frac{5}{16}=1+\frac{1}{\frac{16}{5}} 1621=1+165=1+5161。由此我们得到 a 1 = 1 a_1=1 a1=1。
考虑右下方 16 5 \frac{16}{5} 516,又是形如 21 16 \frac{21}{16} 1621的式子,继续化简得到: 16 5 = 3 + 1 5 \frac{16}{5}=3+\frac{1}{5} 516=3+51,由此我们得到 a 2 = 3 , a 3 = 5 a_2=3,a_3=5 a2=3,a3=5。
其中,终止条件为某次得到分数的分子为 1 1 1。如 3 + 1 5 3+\frac{1}{5} 3+51中的 1 5 \frac{1}{5} 51的分子为 1 1 1,其已符合 a 1 + 1 a 2 + 1 a 3 + 1 a 4 + 1 ⋯ a_1+\frac{1}{a_2+\frac{1}{a_3+\frac{1}{a_4+\frac{1}{\cdots}}}} a1+a2+a3+a4+⋯1111的形式。
注意事项
- 为避免精度误差,可以使用字符串来处理输入的数据
- 题目未规定数据一定是小数,若使用字符串来处理,可能不存在小数点’.’
AC代码
/** @Author: LetMeFly* @Date: 2021-04-28 22:33:39* @LastEditors: LetMeFly* @LastEditTime: 2021-04-28 23:02:25*/
#include <bits/stdc++.h>
using namespace std;
#define mem(a) memset(a, 0, sizeof(a))
#define dbg(x) cout << #x << " = " << x << endl
#define fi(i, l, r) for (int i = l; i < r; i++)
#define cd(a) scanf("%d", &a)
typedef long long ll;
int main()
{string ori; // original代表原始数据cin >> ori;ll numerator, denominator; // 分子分母if (ori.find('.') < ori.size()) // 数据中有小数点,是非整数{int location = ori.find('.');denominator = pow(10, ori.size() - location - 1);numerator = atoll((ori.substr(0, location) + ori.substr(location + 1, ori.size() - location - 1)).c_str());}else // 直接是整数{numerator = atoll(ori.c_str());denominator = 1;}ll gcd = __gcd(numerator, denominator); // 约分numerator /= gcd, denominator /= gcd;while (denominator != 1) // 分母不为1时(倒数分子不为1时){ll mod = numerator / denominator;cout << mod << ' ';numerator -= mod * denominator;swap(numerator, denominator);}cout << numerator << endl;return 0;
}
原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/116224285
BUCT-2021年ACM竞赛班训练(六)2021.4.29-问题 C:女神的考验-题解相关推荐
- 2021年ACM竞赛班训练(六)题解
2021年ACM竞赛班训练(六)题解 ==Problem A 逆元== 题目描述 输入 输出 题目分析 代码 ==Problem B&C 五一假期前最后一题&女神的考验== 题目描述 ...
- 2021年ACM竞赛班训练(十一)2021.5.20-问题 E: 调皮的摩尔-题解
传送门 Balloon 题目描述 输入描述 输出描述 样例一 输入 输出 说明 提示 题目分析 注意事项 AC代码 Balloon 传送门 时间限制:1秒 空间限制:128M 题目描述 儿童节突然火起 ...
- BUCTOJ2021年ACM竞赛班训练九题解
BUCTOJ2021年ACM竞赛班训练九题解 问题A 问题B 问题C 问题D 问题E 问题F 问题A 原题链接 A题题解: 首先让我们看看这个题的题目,ummm-好像要找题目,好吧,我们去看看题目在哪 ...
- 集合划分讲解-And-2021年ACM竞赛班训练(九)2021.5.20-问题 E: 登上火星-题解
集合划分 集合划分,把 n n n个数分成 k k k个集合,不能包含空集,所有的划分数量记为斯大林数,用 S ( n , k ) S(n,k) S(n,k)表示. 目前斯大林数没有直接的公式,但是有 ...
- BUCT-2021年ACM竞赛班训练(一)2021.3.25-问题 A: 大佬的高级IDLE-题解
目录 大佬的高级IDLE 题目描述 输入描述 输出描述 示例1 输入 输出 说明 题目分析 解题思路 并查集离散化 AC代码 大佬的高级IDLE 传送门 时间限制:2秒 空间限制:128M 题目描述 ...
- buctoj2021年ACM竞赛班训练(七)题解
A: 玩游戏 题意:初始有一堆石子共n个,双方轮流行动,每次可以从中取出恰好完全平方数(1.4.9--)个石子,不可以不取石子直接跳过回合.双方都足够聪明,会按最优的方式来游玩,无法行动的人输掉该游戏 ...
- ACM如何入门,ACM竞赛需要学习哪些算法?
#################成绩################## 大一:2017年4月份"玲珑杯"河南工业大学2017年ACM程序设计大赛暨河南高校邀请赛,获得银奖 20 ...
- 拿下Facebook黑客杯四冠王!与Jeff Dean相提并论...ACM竞赛之神的传奇前半生
作者 | 陈大鑫.青暮 转载自:AI科技评论 近日,Facebook Hacker Cup(黑客杯)总决赛落下帷幕,最终,现年26岁的白俄罗斯选手Gennady Korotkevich(比赛网名:To ...
- 一个预告|恭喜斯科特·阿伦森获得2021年ACM计算奖
国际计算机协会(ACM)4月15日宣布,斯科特·阿伦森因对量子计算的开创性贡献荣获2021年ACM计算奖. ACM计算奖用以表彰处于职业生涯中早期.其贡献具有根本且广泛的影响的计算机科学家.ACM主席 ...
最新文章
- ajax传值的url,JQuery ajax url传值与data传值的区别
- 必须要掌握的 InterruptedException 异常处理
- asp.net 检测是否关注公众号_实木板材开裂和变形是什么情况,出现后该怎么检测?...
- python转义是什么意思_Python什么情况下会输出转义符
- php mongodb 子查询,MongoDB数组子查询elemMatch
- linux查看硬盘smart_Linux检测磁盘坏道工具用什么命令
- perl学习之:函数总结
- XLNet:广义自回归预训练语言模型 2019 NIPS
- Asia Yokohama Regional Contest 2018 K题 - Sixth Sense(思维加贪心加二分)
- 值得学习实战8D来了!
- 递归法:走楼梯; 旋转数组的最小数字(递归法和改进二分法)
- python: 大规模数据集的读存技巧
- 阿里巴巴内部Jetpack宝典意外流出!Android岗
- win10安装steam有损计算机,Win10安装steam平台提示“steam fatal error”报错的解决方法...
- C++实现简单读取Obj格式文件
- 全智通A+常见问题汇总解答—A+配件仓库—维修领料—编辑领料单:最后一个仓库无法显示
- linux 编译器制作,Linux交叉編譯器的制作(一)
- blender FLIP-Fluids 流体插件中文帮助文档系列01
- Java条形码生成-Barcode4j
- MAC无法挂载移动硬盘
热门文章
- mysql oracle html5 后台框架
- MySQL 最左原则的理解
- 2021年低压电工试题及解析及低压电工模拟考试题
- 怎么将pdf文件转换成图片?三种方法
- java面试突击第一季课件,Java开发面试技能介绍
- 计算机“字符”,“字节”以及各单位说明
- (附源码)springboot 社区疫苗接种管理系统 毕业设计 281442
- Android 性能优化最佳实践
- 视频文件太大怎样压缩?试试这个方法可以压缩视频文件
- 关于markdown编辑器下(语雀的).md文件导入csdn,图片无法显示的问题