传送门

    • 女神的考验
      • 题目描述
      • 输入描述
      • 输出描述
      • 样例一
        • 输入
        • 输出
  • 题目分析
  • 注意事项
  • 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​+⋯1​1​1​1​的形式。
在此,我们只关注 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+51​1​,小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​+⋯1​1​1​1​的形式,并输出 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​=516​1​,即 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+516​1​。由此我们得到 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​+⋯1​1​1​1​的形式。


注意事项

  • 为避免精度误差,可以使用字符串来处理输入的数据
  • 题目未规定数据一定是小数,若使用字符串来处理,可能不存在小数点’.’

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:女神的考验-题解相关推荐

  1. 2021年ACM竞赛班训练(六)题解

    2021年ACM竞赛班训练(六)题解 ==Problem A 逆元== 题目描述 输入 输出 题目分析 代码 ==Problem B&C 五一假期前最后一题&女神的考验== 题目描述 ...

  2. 2021年ACM竞赛班训练(十一)2021.5.20-问题 E: 调皮的摩尔-题解

    传送门 Balloon 题目描述 输入描述 输出描述 样例一 输入 输出 说明 提示 题目分析 注意事项 AC代码 Balloon 传送门 时间限制:1秒 空间限制:128M 题目描述 儿童节突然火起 ...

  3. BUCTOJ2021年ACM竞赛班训练九题解

    BUCTOJ2021年ACM竞赛班训练九题解 问题A 问题B 问题C 问题D 问题E 问题F 问题A 原题链接 A题题解: 首先让我们看看这个题的题目,ummm-好像要找题目,好吧,我们去看看题目在哪 ...

  4. 集合划分讲解-And-2021年ACM竞赛班训练(九)2021.5.20-问题 E: 登上火星-题解

    集合划分 集合划分,把 n n n个数分成 k k k个集合,不能包含空集,所有的划分数量记为斯大林数,用 S ( n , k ) S(n,k) S(n,k)表示. 目前斯大林数没有直接的公式,但是有 ...

  5. BUCT-2021年ACM竞赛班训练(一)2021.3.25-问题 A: 大佬的高级IDLE-题解

    目录 大佬的高级IDLE 题目描述 输入描述 输出描述 示例1 输入 输出 说明 题目分析 解题思路 并查集离散化 AC代码 大佬的高级IDLE 传送门 时间限制:2秒 空间限制:128M 题目描述 ...

  6. buctoj2021年ACM竞赛班训练(七)题解

    A: 玩游戏 题意:初始有一堆石子共n个,双方轮流行动,每次可以从中取出恰好完全平方数(1.4.9--)个石子,不可以不取石子直接跳过回合.双方都足够聪明,会按最优的方式来游玩,无法行动的人输掉该游戏 ...

  7. ACM如何入门,ACM竞赛需要学习哪些算法?

    #################成绩################## 大一:2017年4月份"玲珑杯"河南工业大学2017年ACM程序设计大赛暨河南高校邀请赛,获得银奖 20 ...

  8. 拿下Facebook黑客杯四冠王!与Jeff Dean相提并论...ACM竞赛之神的传奇前半生

    作者 | 陈大鑫.青暮 转载自:AI科技评论 近日,Facebook Hacker Cup(黑客杯)总决赛落下帷幕,最终,现年26岁的白俄罗斯选手Gennady Korotkevich(比赛网名:To ...

  9. 一个预告|恭喜斯科特·阿伦森获得2021年ACM计算奖

    国际计算机协会(ACM)4月15日宣布,斯科特·阿伦森因对量子计算的开创性贡献荣获2021年ACM计算奖. ACM计算奖用以表彰处于职业生涯中早期.其贡献具有根本且广泛的影响的计算机科学家.ACM主席 ...

最新文章

  1. ajax传值的url,JQuery ajax url传值与data传值的区别
  2. 必须要掌握的 InterruptedException 异常处理
  3. asp.net 检测是否关注公众号_实木板材开裂和变形是什么情况,出现后该怎么检测?...
  4. python转义是什么意思_Python什么情况下会输出转义符
  5. php mongodb 子查询,MongoDB数组子查询elemMatch
  6. linux查看硬盘smart_Linux检测磁盘坏道工具用什么命令
  7. perl学习之:函数总结
  8. XLNet:广义自回归预训练语言模型 2019 NIPS
  9. Asia Yokohama Regional Contest 2018 K题 - Sixth Sense(思维加贪心加二分)
  10. 值得学习实战8D来了!
  11. 递归法:走楼梯; 旋转数组的最小数字(递归法和改进二分法)
  12. python: 大规模数据集的读存技巧
  13. 阿里巴巴内部Jetpack宝典意外流出!Android岗
  14. win10安装steam有损计算机,Win10安装steam平台提示“steam fatal error”报错的解决方法...
  15. C++实现简单读取Obj格式文件
  16. 全智通A+常见问题汇总解答—A+配件仓库—维修领料—编辑领料单:最后一个仓库无法显示
  17. linux 编译器制作,Linux交叉編譯器的制作(一)
  18. blender FLIP-Fluids 流体插件中文帮助文档系列01
  19. Java条形码生成-Barcode4j
  20. MAC无法挂载移动硬盘

热门文章

  1. mysql oracle html5 后台框架
  2. MySQL 最左原则的理解
  3. 2021年低压电工试题及解析及低压电工模拟考试题
  4. 怎么将pdf文件转换成图片?三种方法
  5. java面试突击第一季课件,Java开发面试技能介绍
  6. 计算机“字符”,“字节”以及各单位说明
  7. (附源码)springboot 社区疫苗接种管理系统 毕业设计 281442
  8. Android 性能优化最佳实践
  9. 视频文件太大怎样压缩?试试这个方法可以压缩视频文件
  10. 关于markdown编辑器下(语雀的).md文件导入csdn,图片无法显示的问题