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... 表示 ...
随机推荐
- tomcat 启动显示指定的服务未安装
解决方法: 命令行进入tomcat的bin目录 输入“service.bat install” 重启,OK
- [VC]strcpy和strncoy的区别
第一种情况:char* p="how are you ?";char name[20]="ABCDEFGHIJKLMNOPQRS"; strcpy(name,p ...
- IOS 核心动画(Core Animation)
Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它 能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就 可以实现非常强大的功能. Core ...
- 2018. 2.4 Java中集合嵌套集合的练习
创建学生类有姓名学校和年龄 覆盖toString() 1.创建三个学生对象,放到集合ArrayList 2.输出第2名学生的信息 3.删除第1个学生对象 4.在第2个位置插入1个新学生信息 5.判断刘 ...
- PHP开发框架流行度排名:Laravel居首
摘要:在PHP开发中,选择合适的框架有助于加快软件开发,节约宝贵的项目时间,让开发者专注于功能的实现上.Sitepoint网站做了一个小的调查,结果显示最流行的PHP框架前三甲为:Laravel.Ph ...
- 基于Qt Creator实现中国象棋人机对战, c++实现
GitHub地址: https://github.com/daleyzou/wobuku 这是自己大一学完c++后,在课程实践中写过的一个程序,实现象棋人机对战的算法还是有点难的, 自己当时差不多也是 ...
- django-redis缓存记录
对于站点缓存,我们使用redis这款key-value数据库.Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径.Redis的数据类型都是基于基本数据结构的 ...
- 工具之UltraEdit之正则表达式
- 【Python学习之十】yield之send方法
yield作用 简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.下面以斐波拉 ...
- 在基于vue-cli的项目自定义打包环境
在工作当中,遇到了下面这个问题: 测试环境与生产环境中的用户权限不一样,因此,就需要根据测试环境打一个包,生产环境又打一个包.可是,如果每次打包都需要更改权限的配置文件的话,会很麻烦,而且,体现不出一 ...