HLG1125 循环小数2
循环小数 II | ||||||
|
||||||
Description | ||||||
对于一个小数,我们记作0.abcd(efgh),若其中含有括号,则其中用括号包围的是循环数。若不含有括号,则表示的是有限小数。 现在需要你求出给出的小数对应的最简分数表示形式。 |
||||||
Input | ||||||
输入数据每行一个小数,最长非循环位为4位,最长循环数为4位,按照题目描述的方法表示 处理到文件结束 |
||||||
Output | ||||||
输出给出的小数对应的最简分数表示形式 |
||||||
Sample Input | ||||||
0.1
0.(1)
0.8(3)
|
||||||
Sample Output | ||||||
1/10
1/9
5/6
|
||||||
Author | ||||||
齐达拉图 |
其实不难,只需要记住一个转换公式即可,eg:
0.8(142),求该循环小数的分数形式;可以先设置该循环小数的结果为x
则-》8142.(142)==10000x
8.(142)==10x
用第一个方程减去第二个方程便可以求得x
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
using namespace std;
char str[];
int gcd(int a,int b){
if(b==)
return a;
else
gcd(b,a%b);
} int main(){
while(scanf("%s",str)!=EOF){
int sum1=,sum2=;
// getchar();
int len=strlen(str);
// printf("-->%d\n",len);
int flag=-;
for(int i=;i<len;i++){
if(str[i]=='(')
flag=i; }
if(flag==-){ int xx=pow(,len-);
int yy=;
for(int i=;i<len;i++){
int x=str[i]-''+;
yy=yy*+x;
}
int yue=gcd(yy,xx);
if(yue==)
printf("%d/%d\n",yy,xx);
else
printf("%d/%d\n",yy/yue,xx/yue); }
else{
int len1=flag-;
int len2=len-flag-;
int l1=,l2=;
double r1,r2;
r1=pow((double),len1+len2);
r2=pow((double),len1);
// printf("--->%d %d %lf %lf\n",len1,len2,r1,r2);
for(int i=;i<len;i++){
if(str[i]>=''&&str[i]<='')
l1=l1*+str[i]-''+;
}
for(int i=;i<flag;i++){
l2=l2*+str[i]-''+;
}
int x2=l1-l2;
int y2=(int)r1-(int)r2;
int yue=gcd(x2,y2);
if(yue==)
printf("%d/%d\n",x2,y2);
else
printf("%d/%d\n",x2/yue,y2/yue); } memset(str,,sizeof(str));
}
return ;
}
HLG1125 循环小数2的更多相关文章
- [LeetCode] Fraction to Recurring Decimal 分数转循环小数
Given two integers representing the numerator and denominator of a fraction, return the fraction in ...
- uva202:循环小数(循环节+抽屉原理)
题意: 给出两个数n,m,0<=n,m<=3000,输出n/m的循环小数表示以及循环节长度. 思路: 设立一个r[]数组记录循环小数,u[]记录每次的count,用于标记,小数计算可用 r ...
- nyoj 329 循环小数【KMP】【求最小循环节长度+循环次数+循环体】
循环小数 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 我们可爱的 c小加 近段儿正在潜心研究数学,当他学习到循环小数这一部分时不是太明白循环体是什么意思(比如说3 ...
- 循环小数 UVa202
输入整数a和b(0<=a<=3000,1<=b<=3000),输出a/b的循环小数表示以及循环节长度. 例如,a=5,b=43,小数表示为0.(1162790697674418 ...
- ACM—循环小数转变成分数知识点_C++实现
在小学的时候,我们的学生都能把“整数表示成分母是1的分数”,而且大多数学生也都能把有限小数和循环小数表示成分数的形式.这样,整数.分数.有限小数.循环小数都属于有理数.教科书中说“整数和分数统称有理数 ...
- 无限循环小数POJ1930
题意:给定一个无限循环小数,求其分数形势,要求分母最小 分析:看了别人的题解才做出来的,将无限循环小数转化成分数,分为纯循环和混循环两种形式. (1)对于纯循环:用9做分母,有多少个循环数就几个9,比 ...
- POJ 1930 Dead Fraction (循环小数-GCD)
题意:给你一个循环小数,化成分数,要求分数的分母最小. 思路:暴力搜一遍循环节 把循环小数化分数步骤: 纯循环小数化分数 纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位 ...
- poj 1930 Dead Fraction(循环小数化分数)
Dead Fraction Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3478 Accepted: 1162 Des ...
- UVA 10555 - Dead Fraction(数论+无限循环小数)
UVA 10555 - Dead Fraction 题目链接 题意:给定一个循环小数,不确定循环节,求出该小数用分数表示,而且分母最小的情况 思路:推个小公式 一个小数0.aaaaabbb... 表示 ...
随机推荐
- leetcode——1
1. 题目 Two Sum Given an array of integers, find two numbers such that they add up to a specific targ ...
- hdu-2112 HDU Today---dijkstra+标号
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2112. 题目大意: 求起点到终点的最短路 解题思路: 对地名进行编号即可 然后直接dijkstra算 ...
- geoNear查询 near查询的升级版
geoNear查询可以看作是near查询点进化版 geoNear查询使用runCommand命令进行使用,常用使用如下: db.runCommand({ geoNear:<collection& ...
- 六、react添加多个className报错解决方法
例如<div className={style.calss1,style.class2}></div> 该方法会报错 想得到最终渲染的结果:<div class='cla ...
- Java统计用户年/月/周/日网站访问量
一:准备工作,引入相关依赖: 二:运行效果图: 下一次访问 三:具体代码如下 (1):CountObjectInfo.java package cn.csrc.base.count; import ...
- 2017.12.2 用java做一个日历
1.先判断输入的日期是否为闰年 2.在判断输入的月份是否为2月 3.在获取输入的年份和月份的1月1日 的列数 4.在输出 import java.util.*; public class demo{ ...
- 2017.12.14 Java实现-----图书管理系统
通过对图书的增删改查操作 用数组实现 Manager类 package demo55; import java.util.*; public class Manager { Scanner sc = ...
- javaweb基础(31)_国际化(i18n)
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
- Struts动态联动效果
<%@page contentType="text/html;charset=utf-8"%> <%@ include file="../../comm ...
- 第18题:在O(1)时间删除链表结点+删除链表中重复的节点
题目描述:题目描述在O(1)时间删除链表结点 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 考查创新编程能力. 思路: 1.如果从头到尾遍历,时间O(n) 2.如果将待删 ...