洛谷 P2399 non hates math
2024-08-31 07:55:07
题目背景
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();
}
最新文章
- 爬虫框架--webmagic
- 现代软件工程作业-- GitHub的学习
- __getattitem_ \__setattitem__\__delitem__
- 浅析Hadoop文件格式
- JSon_零基础_002_将List类型数组转换为JSon格式的对象字符串,返回给界面
- 开启xp_cmdshell
- 007 The Inheritance In JAVA
- 关于struts2的上传和下载
- html5音频和视频相关属性和方法
- 初始化rails上的compass项目
- IOS详解TableView——对话聊天布局的实现
- sqlserver-根据2张表的id更新其他列值
- JVM内存模型及垃圾回收的研究总结
- 运用SqlSugar框架+Axios写的增删查案例
- node.js学习4--------------------- 根据不同路径来响应内容,以及中文乱码的解决
- SpringData分页功能
- fatal error c1001 编译器中发生内部错误 OpenMesh6.3
- 洛谷p1067
- MP实战系列(十一)之封装方法详解(续一)
- (转载)Python 的 JPype 模块调用 Jar 包
热门文章
- Codeforces--630E--A rectangle(规律)
- Node.js安全清单
- Gym - 101981A The 2018 ICPC Asia Nanjing Regional Contest A.Adrien and Austin 简单博弈
- 通过JS制作一个简易数码时钟
- Redis(三)-Ubuntu下安装
- 知识总结1:debug命令汇总(一)
- Leetcode0024--Swap Nodes in Pairs 链表配对交换
- php加密方法有哪些
- SQL server基本语法
- Deutsch lernen (03)