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... 表示 ...
随机推荐
- top命令交互快捷键
#toptop - :: up :, users, load average: 0.17, 0.12, 0.14 Tasks: total, running, sleeping, stopped, z ...
- 【BZOJ4810】[YNOI2017] 由乃的玉米田(莫队+bitset)
点此看题面 大致题意: 给你一段序列,每次询问一段区间内是否存在两个数的差或和或积为\(x\). 莫队算法 看到区间询问+可以离线,首先想到了莫队啊. 但是,在较短的时间内更新信息依然比较难以实现. ...
- python_22_enumerate
a=['a','d','f','g'] for i in enumerate(a): print(i) #enumerate 把列表的下表以元组的形式取出来 #结果 # (0, 'a') # (1, ...
- kubernetes-服务发现service(九)
service •防止Pod失联 •定义一组Pod的访问策略 •支持ClusterIP,NodePort以及LoadBalancer三种类型 •Service的底层实现主要有ipta ...
- Vuex的简单了解
vuex的官网了解:https://vuex.vuejs.org/zh/guide/ 一.什么是vuex? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所 ...
- TCP/IP与OSI参考模型原理
网络是很重要同时也是很难理解的知识,这篇文章将会用自己容易理解的方式来记录有关网络的tcp与osi模型内容,不求专业深刻,但求通俗易懂也好. OSI参考模型 OSI定义了网络互连的七层框架(物理层.数 ...
- k8s使用自定义证书将客户端认证接入到API Server
自定义证书使用kubectl认证接入API Serverkubeconfig是API Server的客户端连入API Server时使用的认证格式的客户端配置文件.使用kubectl config v ...
- centos 关闭AliYunDun
执行命令: service aegis stop #停止服务 chkconfig --del aegis # 删除服务
- 描述符应用 -- 让python变成一个强类型的语言
众所周知,python是一门弱类型的语言,变量可以随意赋值成任意类型,但是通过描述符,我们可以把数据变成强类型的. 我们为数据设置数据描述符,因为数据描述的优先级大于实例属性,所以在给数据赋值的时候会 ...
- HDU 6153 KMP
最终刷KMP目标就是为了挑战这道题!现在成功了恩... 首先,题目大意是:给出一个字符串str1,之后给出另一个字符串str2,问,str2的后缀在str1匹配的次数*后缀当前长度是多少 首先考虑正统 ...

