题目连接

题意:

  给一个无限循环小数,并给出它的循环节长度,让你把这个小数转化为分数

思路:

 这里先说一个结论,有了这个结论,就很好处理了,例如: 0.123123123… = 123 / 999 ,这样我们就可以把小数部分转化为分数,如果有整数部分,就先转小数,然后再进行合并,由于要求分数是最简,所以要进行化简
 这样就把问题完全解决了吗?并没有,如果第一个循环节前面有一部分小数呢?例如: 123.4565656…这样的话,我们可以把4提到整数部分,最后再除个十就可以了 也就是转化为 ---->(1234 + 56 / 99) * (1/10)这样这个问题才算是完全解决

丑陋的代码

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int inf = 0x7fffffff;
const int maxn = 2e5 + 5;
const int mod = 1e9 + 7;
const int dir8[8][2] = {{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};
const int dir14[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};ll GCD(ll a,ll b)
{ll temp;while(b){temp = a % b;a = b;b = temp;}return a;
}ll atol(string a,int len,int &pos)
{ll sum = 0;for(int i = 0; i < len; i++){if(a[i] == '.'){pos = i;continue;}sum = sum * 10 + a[i] - '0';}return sum;
}ll Get(int n)
{ll ans = 0;for(int i = 1; i <= n; i++){ans = ans * 10 + 9;}return ans;
}int main()
{string str;int n;cin>>str>>n;ll fenmu = Get(n);int pos;ll pre = atol(str,str.size() - n,pos);ll suf = 0;for(int i = str.size() - n; i < str.size(); i++){suf = suf * 10 + str[i] - '0';}ll t = 1;for(int i = pos + 1; i < str.size() - n; i++){t *= 10;} ll fenzi = fenmu * pre + suf;//cout << fenzi << endl;fenmu = fenmu * t;//cout << pre << ' ' << suf << ' ' << fenmu << ' ' << fenzi <<endl;ll gcd = GCD(fenzi,fenmu);cout << fenzi / gcd << '/' << fenmu / gcd<< endl;return 0;
}

Rational Ratio相关推荐

  1. haskell的分数运算

    孩子要上3年级了,里面涉及分数的部分,先准备一下. haskell中涉及分数的模块是Ratio. Ratio Synopsis Documentation data Ratio a Rational ...

  2. python0.1+0.2_为什么0.1+0.2=0.30000000000000004

    语言 代码 结果 C #includeint main(int argc, char* argv) {printf("%.17fn", .1+.2);return 0;} 0.30 ...

  3. 【开源项目经验】之计算PSNR

    1.计算PNSR #include <stdio.h> #include <stdlib.h> #include <string.h> #include <m ...

  4. UVA654 LA5508 POJ1079 Ratio【暴力】

    Ratio Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4384 Accepted: 1616 Description If ...

  5. 细说C++11中ratio编译期分数(一)

    对于分数,C++的标准库并没有提供这样的一个类,如果需要完全可以自己去实现,但是C++11提供了一个编译期常量分数类std::ratio,这个类定义于<ratio>头文件中. 这个类允许你 ...

  6. C++11 std::ratio

    一 简介 头文件<ratio> template< std::intmax_t Num, std::intmax_t Denom = 1 > class ratio; (sin ...

  7. 【OpenCV】图像/视频相似度测量PSNR( Peak signal-to-noise ratio) and SSIM,视频/图片转换

    目录 1 目标 2 原理 2.1 图像比较 - PSNR and SSIM¶ 3 代码 3.1如何读取一个视频流(摄像头或者视频文件)?¶ 3 运行效果 视频/图片转换: 如何用OpenCV创建一个视 ...

  8. seaborn使用jointplot函数为散点图添加边缘图、添加回归线、为边缘直方图添加密度曲线、使用ratio函数突出显示边缘图形(focus on Marginal Plot )

    seaborn使用jointplot函数为散点图添加边缘图.添加回归线.为边缘直方图添加密度曲线.使用ratio函数突出显示边缘图形(Make Marginal Plot with focus on ...

  9. 目标检测--Object Detection via Aspect Ratio and Context Aware

    Object Detection via Aspect Ratio and Context Aware Region-based Convolutional Networks https://arxi ...

最新文章

  1. 雷林鹏分享:PHP 魔术常量
  2. Stanford UFLDL教程 反向传播算法(BP算法)
  3. Eclipse 运行程序
  4. shell不允许输入空字符_反弹shell | ncamp;bash
  5. #425[div2]
  6. Web项目中时间格式化的方法
  7. Codeforces348B Apple Tree DFS
  8. JavaWeb核心编程之(三.6)HttpServlet
  9. ubuntu开机自动启动脚本_Ubuntu添加开机自动启动程序方法
  10. 计算机存储器如何工作原理,存储器的工作原理
  11. 效度不达标的处理方式
  12. 线代9讲 第八讲 相似理论
  13. 全网最细最全OLAP之clickhouse笔记|clickhouse文档|clickhouse揭秘文档(三)--clickhouse单机安装和clickhouse集群安装
  14. 一个简单的姓名拼音匹配
  15. Oracle数据库的表空间(一)
  16. Linux Socket 两个客户端通信,服务端作为中转
  17. Java插件自动保存浏览器书签_EverSync插件,浏览器书签同步插件,支持Chrome和Firefox书签同步...
  18. 中国半导体芯片产业布局图(2022版)-爱普搜汽车
  19. python学习笔记 Network XHR json
  20. iOS13 已抛弃 3D touch,使用长按代替

热门文章

  1. Unity—对话系统GalGame游戏文字对话制作
  2. Deep Q learning: DQN及其改进
  3. 性价比高的微信社群助手有哪些?能介绍一下吗?
  4. 揭秘不同版本CMMI认证证书的真假
  5. 有些政府性质的网站对非IE浏览器不怎么支持,该如何处理?
  6. 备战Noip2018模拟赛10(B组) T1 Max 和最大
  7. 每日自动签到工具的制作思路
  8. 4.0高等数学五-积分与路径无关的条件
  9. Destoon采集翻译伪原创发布工具
  10. MVC模式与三层架构