Rational Ratio
题目连接
题意:
给一个无限循环小数,并给出它的循环节长度,让你把这个小数转化为分数
思路:
这里先说一个结论,有了这个结论,就很好处理了,例如: 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相关推荐
- haskell的分数运算
孩子要上3年级了,里面涉及分数的部分,先准备一下. haskell中涉及分数的模块是Ratio. Ratio Synopsis Documentation data Ratio a Rational ...
- 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 ...
- 【开源项目经验】之计算PSNR
1.计算PNSR #include <stdio.h> #include <stdlib.h> #include <string.h> #include <m ...
- UVA654 LA5508 POJ1079 Ratio【暴力】
Ratio Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4384 Accepted: 1616 Description If ...
- 细说C++11中ratio编译期分数(一)
对于分数,C++的标准库并没有提供这样的一个类,如果需要完全可以自己去实现,但是C++11提供了一个编译期常量分数类std::ratio,这个类定义于<ratio>头文件中. 这个类允许你 ...
- C++11 std::ratio
一 简介 头文件<ratio> template< std::intmax_t Num, std::intmax_t Denom = 1 > class ratio; (sin ...
- 【OpenCV】图像/视频相似度测量PSNR( Peak signal-to-noise ratio) and SSIM,视频/图片转换
目录 1 目标 2 原理 2.1 图像比较 - PSNR and SSIM¶ 3 代码 3.1如何读取一个视频流(摄像头或者视频文件)?¶ 3 运行效果 视频/图片转换: 如何用OpenCV创建一个视 ...
- seaborn使用jointplot函数为散点图添加边缘图、添加回归线、为边缘直方图添加密度曲线、使用ratio函数突出显示边缘图形(focus on Marginal Plot )
seaborn使用jointplot函数为散点图添加边缘图.添加回归线.为边缘直方图添加密度曲线.使用ratio函数突出显示边缘图形(Make Marginal Plot with focus on ...
- 目标检测--Object Detection via Aspect Ratio and Context Aware
Object Detection via Aspect Ratio and Context Aware Region-based Convolutional Networks https://arxi ...
最新文章
- 雷林鹏分享:PHP 魔术常量
- Stanford UFLDL教程 反向传播算法(BP算法)
- Eclipse 运行程序
- shell不允许输入空字符_反弹shell | ncamp;bash
- #425[div2]
- Web项目中时间格式化的方法
- Codeforces348B Apple Tree DFS
- JavaWeb核心编程之(三.6)HttpServlet
- ubuntu开机自动启动脚本_Ubuntu添加开机自动启动程序方法
- 计算机存储器如何工作原理,存储器的工作原理
- 效度不达标的处理方式
- 线代9讲 第八讲 相似理论
- 全网最细最全OLAP之clickhouse笔记|clickhouse文档|clickhouse揭秘文档(三)--clickhouse单机安装和clickhouse集群安装
- 一个简单的姓名拼音匹配
- Oracle数据库的表空间(一)
- Linux Socket 两个客户端通信,服务端作为中转
- Java插件自动保存浏览器书签_EverSync插件,浏览器书签同步插件,支持Chrome和Firefox书签同步...
- 中国半导体芯片产业布局图(2022版)-爱普搜汽车
- python学习笔记 Network XHR json
- iOS13 已抛弃 3D touch,使用长按代替