题目背景

non习惯将分数化成小数,但在数学中要以分数形式写,不能化成小数

因此non找到了会编程的你,帮助他将小数化回分数

题目描述

给出一个小数,将它化成假分数的形式

小数的类型有2种:(不考虑无限不循环小数)

普通小数

循环小数(会给出循环节)

(循环节用( )表示)

输入输出格式

输入格式:

一个小数n

输出格式:

输出这个小数n转化成最简分数的形式

输入输出样例

输入样例#1: 复制

1.32
输出样例#1: 复制

33/25
输入样例#2: 复制

1.(3)
输出样例#2: 复制

4/3
输入样例#3: 复制

1.0
输出样例#3: 复制

1/1

说明

输入小数的数据范围

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的更多相关文章

  1. P2399 non hates math

    P2399 non hates math将分数化成小数的模拟题,把循环减掉就可以了.1.1(234)*10^4==11234.234*10^1==11.2349999*(1.1(234))==1122 ...

  2. bzoj2154||洛谷P1829 Crash的数字表格&&JZPTAB && bzoj3309 DZY Loves Math

    bzoj2154||洛谷P1829 https://www.lydsy.com/JudgeOnline/problem.php?id=2154 https://www.luogu.org/proble ...

  3. 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&& ...

  4. 【洛谷4172】 [WC2006]水管局长(LCT)

    传送门 洛谷 BZOJ Solution 如果不需要动态的话,那就是一个裸的最小生成树上的最大边权对吧. 现在动态了的话,把这个过程反着来,就是加边对吧. 现在问题变成了怎么动态维护加边的最小生成树, ...

  5. 洛谷P1244 青蛙过河 DP/思路

    又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...

  6. [洛谷P4723]【模板】线性递推

    题目大意:求一个满足$k$阶齐次线性递推数列$a_i$的第$n$项. 即:$a_n=\sum\limits_{i=1}^{k}f_i \times a_{n-i}$ 题解:线性齐次递推,先见洛谷题解, ...

  7. (洛谷 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 ...

  8. 洛谷 P2056 [ZJOI2007]捉迷藏 || bzoj 1095: [ZJOI2007]Hide 捉迷藏 || 洛谷 P4115 Qtree4 || SP2666 QTREE4 - Query on a tree IV

    意识到一点:在进行点分治时,每一个点都会作为某一级重心出现,且任意一点只作为重心恰好一次.因此原树上任意一个节点都会出现在点分树上,且是恰好一次 https://www.cnblogs.com/zzq ...

  9. 洛谷 P1903 BZOJ 2120 清橙 A1274【模板】分块/带修改莫队(数颜色)(周奕超)

    试题来源 2011中国国家集训队命题答辩 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔 ...

随机推荐

  1. gcd&&exgcd&&斐蜀定理

    gcd就是求a和b最大公约数,一般方法就是递推.不多说,上代码. 一.迭代法 int gcd(int m, int n) { ) { int c = n % m; n = m; m = c; } re ...

  2. bzoj 4709 [ Jsoi2011 ] 柠檬 —— 斜率优化DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4709 课上讲的题,还是参考了博客...:https://www.cnblogs.com/GX ...

  3. EOJ 3384 食物链

    动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1-N 编号.每个动物都是 A,B,C 中的一种,但是我们并不知道它到 ...

  4. DCloud-MUI:代码块

    ylbtech-DCloud-MUI:代码块 1.返回顶部 1. 怎么用? html      此底色代表最小触发字符      此底色代表非必要完整触发字符 *需HBuilder7.1+,或者下载m ...

  5. Nearest-Neighbor Methods(ESL读书笔记)

    Nearest-neighbor methods use those observations in the training set T closest in input space to x  f ...

  6. 安装DotnetCore-Vue项目模板

    dotnet new --install Microsoft.AspNetCore.SpaTemplates::*

  7. [hihocoder][Offer收割]编程练习赛59

    替换函数 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #includ ...

  8. android开源新闻小程序、3D翻转公告效果、小说检索、Kotlin开发TODO清单等源码

    Android精选源码 开源新闻小程序源码分享 android动态壁纸.锁屏动画.来电秀等源码 android笔记App效果源码 Android实现3D版翻页公告效果 android小说搜索阅读源码 ...

  9. 【Linux】连接CRT

    linux中出现crt连接不上多数是ip地址设置不正确. window中命令行界面(cmd进入),输入ipconfig,查看虚拟机的ip. 打开linux终端,命令行下输入:ifconfig eth0 ...

  10. LinkedList 源码

    1.类继承结构            结构: 2.成员及方法                 注意:其中      getFirst,getLast,removeFirst,removeLast,el ...