#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<map>
#include<iostream>
using namespace std;
#define jw 10
///小小的总结了一下
///没有循环的方式略,当有循环的时候,就要用到0.999999... = 1的知识了
///0.99999.. = (9/10)+(9/100)+(9/1000)+(9/10000)+....+(9/10^n)
/// = (1/10 + 1/100 + 1/1000 ...)*9 左边由等比数列求和公式得到1/9 * (1 - 1/10^n);
/// n->+oo,左式为1/9,证明成立,代码中第二种方式原理与其一致
int gcd(int a,int b)
{
return b == ? a : gcd(b, a % b);
}
int main()
{
char a[];
while(~scanf("%s",a))
{
int len = strlen(a);
int pos1 = -,pos2 = -;
for(int i = ; i < len; i++)
{
if(a[i] == '(')
{
pos1 = i;
}
if(a[i] == ')')
{
pos2 = i;
}
}
if(pos1 == pos2)
{
int sum = ,num,tot = ;
for(int i = len-;a[i] != '.';i--)
{
num = a[i] - '';
sum += powl(,len--i) * num;
tot++;
}
tot = powl(,tot);
// cout<<"sum = "<<sum<<endl;
// cout<<"tot = "<<tot<<endl;
int gc1 = gcd(tot,sum);
cout<<sum/gc1<<"/"<<tot/gc1<<endl;
}
else
{
int sum1 = ,tot1 = ;
for(int i = ;a[i] != '(';i++)
{
sum1 *= jw;
sum1 += a[i] - '';
tot1++;
}
int sum2 = ,tot2 = ;
for(int i = pos1+;i < pos2;i++)
{
sum2 *= jw;
sum2 += a[i] - '';
tot2++;
}
tot1 = powl(,tot1);
tot2 = powl(,tot2) - ;
int num1 = sum1 * tot2 + sum2;
int num2 = tot1 * tot2;
int gc2 = gcd(num1,num2);
cout<<num1/gc2<<"/"<<num2/gc2<<endl;
}
}
}

hrbustoj 1125 循环小数 II(小数变分数+极限思想)的更多相关文章

  1. HDU1717小数化分数2

    小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  2. 【HDU】1717 小数化分数2 ——计数原理

    小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  3. HDU 1717 小数化分数2 数学题

    解题报告:输入一个小于1的小数,让你把这个数转化成分数,但注意,输入的数据还有无限循环的小数,循环节用一对括号包含起来. 之前还没有写过小数转分数的题,当然如果没有循环小数的话,应该比较简单,但是这题 ...

  4. HDU 1717 小数化分数2(最大公约数)

    小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  5. CSU 8月月赛 Decimal 小数化分数

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1303 这个OJ很容易跪所以我贴一下题目 Description 任意一个分数都是有理数,对于任意一 ...

  6. 杭电oj1717——小数化分数(java实现)

    question:小数化分数2 思路: /** * 这道题没有整数部分(有也无所谓,算小数部分,算完了分子分母按倍数加上就好),也就是说数组直接从a[2]开始后面是小数,我把这道题分为了三类: * * ...

  7. 无限小数转分数POJ1930分析

    将无限小数化为分数,有一套简单的公式.使其轻松表示出来. 循环节 例如:0.121212…… 循循环节为12.   公式 这个公式必须将循环节的开头放在十分位.若不是可将原数乘10^x(x为正整数) ...

  8. 紫书 习题8-14 UVa 1616(二分+小数化分数+精度)

    参考了https://www.cnblogs.com/dwtfukgv/p/5645446.html (1)直接二分答案.说实话我没有想到, 一开始以为是贪心, 以某种策略能得到最优解. 但是想了很久 ...

  9. ACM学习历程—HDU1717 小数化分数2(gcd)

    Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢? 请你写一个程序不但可以将普通小数 ...

随机推荐

  1. 用python写刷票程序

    刷票一般要突破以下限制: 1.验证码识别 2.同一ip不可连续投票 解决办法 1.用tesseract工具,链接在此 https://code.google.com/p/tesseract-ocr/  ...

  2. oracle账户锁定解决方法

    今天进使用orcle中,发现系统中,system账户登录里提示账户被锁定 ,后来查了查资料,问题解决,方法如下: Microsoft Windows [版本 5.2.3790] (C) 版权所有 19 ...

  3. C# 连接SQL Server数据库的几种方式--server+data source等方式

    如何使用Connection对象连接数据库? 对于不同的.NET数据提供者,ADO.NET采用不同的Connection对象连接数据库.这些Connection对象为我们屏蔽了具体的实现细节,并提供了 ...

  4. thinkphp 实现微信公众号开发(一)

    打算用php做一个微信公众号管理平台.用thinkphp框架 教程上面是是应用下面会自动生成Lib文件夹.但是我的3.2.3自动生成目录不一样 我修改了我项目文件夹下面的IndexController ...

  5. 二分图匹配之KM求二分图最佳匹配算法

    参考网址:http://blog.163.com/suntroop@yeah/blog/static/17012103120115185927194/ 对于具有二部划分( V1, V2 )的加权完全二 ...

  6. PAXOS may not terminate

    It’s easy to see that Paxos does have a failure mode. When two proposers are active at the same time ...

  7. Ansible7:Playbook常用模块【转】

    playbook的模块与在ansible命令行下使用的模块有一些不同.这主要是因为在playbook中会使用到一些facts变量和一些通过setup模块从远程主机上获取到的变量.有些模块没法在命令行下 ...

  8. perl中调用cgi

    来源: http://www.cnblogs.com/itech/archive/2012/09/23/2698856.html 参考:http://www.willmaster.com/librar ...

  9. Oracle record 解锁

    Oracle修改表中记录时出现record is locked by another user的弹出框问题 是因为在操作表中数据时没有commit,导致表被锁. 执行下面两行语句: (1)查看被锁表的 ...

  10. ignite服务中的bean注入为空

    在写ignite服务的时候,通常服务配置在启动文件中: <bean class="org.apache.ignite.services.ServiceConfiguration&quo ...