洛谷 P2399 non hates math
题目背景
non习惯将分数化成小数,但在数学中要以分数形式写,不能化成小数
因此non找到了会编程的你,帮助他将小数化回分数
题目描述
给出一个小数,将它化成假分数的形式
小数的类型有2种:(不考虑无限不循环小数)
普通小数
循环小数(会给出循环节)
(循环节用( )表示)
输入输出格式
输入格式:
一个小数n
输出格式:
输出这个小数n转化成最简分数的形式
输入输出样例
说明
输入小数的数据范围
0至1000
对于50%的数据保证没有循环节
对于20%的数据需要读入优化
思路:模拟即可。
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
char s[];
int l,r,num,num1,num2,num3;
int gcd(int x,int y){
return x==?y:gcd(y%x,x);
}
int pow(int a,int b){
int s=;
for(int i=;i<=b;i++) s*=a;
return s;
}
void work1(){
int len=strlen(s),ans1,ans2;
for(int i=len-;i>=;i--){
if(s[i]>=''&&s[i]<=''&&(s[i+]==')'||r)){
num1+=pow(,r)*(s[i]-'');
r++;
}
if(s[i]>=''&&s[i]<=''&&(s[i+]=='('||l||s[i+]=='.')){
num2+=pow(,l)*(s[i]-'');
l++;
}
if(s[i]=='.'){ ans1=l;ans2=r; }
}
l=num1-num2;r=pow(,ans2)-pow(,ans1);
int GCD=gcd(l,r);
printf("%d/%d",l/GCD,r/GCD);
exit();
}
void work2(){
int len=strlen(s);
for(int i=len-;i>=;i--){
if(s[i]>=''&&s[i]<=''){
num3+=pow(,num)*(s[i]-'');
num++;
}
if(s[i]=='.') num1=num;
}
l=num3;r=pow(,num1);
int GCD=gcd(l,r);
printf("%d/%d",l/GCD,r/GCD);
exit();
}
int main(){
cin>>s;
int len=strlen(s);
for(int i=;i<len;i++)
if(s[i]=='('){ work1();break; }
work2();
}
洛谷 P2399 non hates math的更多相关文章
- P2399 non hates math
P2399 non hates math将分数化成小数的模拟题,把循环减掉就可以了.1.1(234)*10^4==11234.234*10^1==11.2349999*(1.1(234))==1122 ...
- bzoj2154||洛谷P1829 Crash的数字表格&&JZPTAB && bzoj3309 DZY Loves Math
bzoj2154||洛谷P1829 https://www.lydsy.com/JudgeOnline/problem.php?id=2154 https://www.luogu.org/proble ...
- USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)
usaco ch1.4 sort(d , d + c, [](int a, int b) -> bool { return a > b; }); 生成与过滤 generator&& ...
- 【洛谷4172】 [WC2006]水管局长(LCT)
传送门 洛谷 BZOJ Solution 如果不需要动态的话,那就是一个裸的最小生成树上的最大边权对吧. 现在动态了的话,把这个过程反着来,就是加边对吧. 现在问题变成了怎么动态维护加边的最小生成树, ...
- 洛谷P1244 青蛙过河 DP/思路
又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...
- [洛谷P4723]【模板】线性递推
题目大意:求一个满足$k$阶齐次线性递推数列$a_i$的第$n$项. 即:$a_n=\sum\limits_{i=1}^{k}f_i \times a_{n-i}$ 题解:线性齐次递推,先见洛谷题解, ...
- (洛谷 P1429 平面最近点对(加强版) || 洛谷 P1257 || Quoit Design HDU - 1007 ) && Raid POJ - 3714
这个讲的好: https://phoenixzhao.github.io/%E6%B1%82%E6%9C%80%E8%BF%91%E5%AF%B9%E7%9A%84%E4%B8%89%E7%A7%8D ...
- 洛谷 P2056 [ZJOI2007]捉迷藏 || bzoj 1095: [ZJOI2007]Hide 捉迷藏 || 洛谷 P4115 Qtree4 || SP2666 QTREE4 - Query on a tree IV
意识到一点:在进行点分治时,每一个点都会作为某一级重心出现,且任意一点只作为重心恰好一次.因此原树上任意一个节点都会出现在点分树上,且是恰好一次 https://www.cnblogs.com/zzq ...
- 洛谷 P1903 BZOJ 2120 清橙 A1274【模板】分块/带修改莫队(数颜色)(周奕超)
试题来源 2011中国国家集训队命题答辩 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔 ...
随机推荐
- elasticsearch _field_stats 源码分析
_field_stats 实现的功能:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/search-field-stats.ht ...
- 对ip数据进行分类----c++
#!/usr/bin/expect set ip [lindex $argv ] set password [lindex $argv ] spawn -l root ${ip} "host ...
- C# 设置百分比保留2位数
double a=50; double b=100; 没有小数部分Label1.Text = (a / (a+b)).ToString("0%") 两位小数Label2 ...
- html body中的标签
HTML中的标签有两类 一.字体标签 字体标签包含:h1~h6.<font>.<u>.<b>.<strong><em>.<sup> ...
- SVN 报错 sqlite[S11]: database disk image is malformed
svn 提示数据库损坏 SVN 报错 sqlite[S11]: database disk image is malformed 解决办法:网上说的打开wc.db删除lock表 不管用.我发现这样可以 ...
- AFN请求后台返回数据为NSInlineData类型的处理
在利用AFN进行数据解析时出现返回数据为 <7b227374 61747573 223a302c 226d6573 73616765 223a22e6 82a8e79a 84e6898b e69 ...
- 图像局部显著性—点特征(SiftGPU)
SIFT的计算复杂度较高. SiftGpu的主页:SiftGPU: A GPU Implementation of ScaleInvariant Feature Transform (SIFT) 对S ...
- OpenCV: kalman滤波的代码段
序言:在我的疲劳检测工程 AviTest中!显示框为320*240,使用OpenCV的kalman滤波算法,可以实现简单的锁相追踪-实现对眼球的位置锁定. 代码如下: CvPoint Wishchin ...
- (转)Bootstrap 之 Metronic 模板的学习之路 - (1)总览
https://segmentfault.com/a/1190000006673582#articleHeader0 写在前面 bootstrap 的模板非常多,Envato 上有着各种各样的免费及付 ...
- C# 前一个数是后一个数的父级
private void button2_Click(object sender, EventArgs e) { var str = "1 2 3 4 5 6 7 8 9 10 11 12 ...