小数化分数2

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3941    Accepted Submission(s): 1601

Problem Description
Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。
Input
第一行是一个整数N,表示有多少组数据。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。
Output
对每一个对应的小数化成最简分数后输出,占一行。
Sample Input
3 0.(4) 0.5 0.32(692307)
Sample Output
4/9 1/2 17/52
构造循环小数
a1a2a3a4a5..an/10^n-1;

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
long long gcd(long long a,long long b);
long long modfast(long long x,long long y);
int main()
{
char s[1000];
int T=0;
scanf("%d",&T);
getchar();
while(T--)
{
long long a=0,b=0;
long long al=0,bl=0;
long long at=0,bt=0;
long long n=0,m=0;
bool mark=0;
int i=2;
scanf("%s",s);
while(s[i])
{
if(s[i]=='(')
{
mark=1;
i++;
continue;
}
else if(s[i]==')')
{
break;
}
if(!mark)
{
at++;
a=a*10+s[i]-'0';
}
else
{
bt++;
b=b*10+s[i]-'0';
}
i++;
}
if(bt!=0)
{
al=modfast(10,at);
bl=(modfast(10,bt)-1)*al;
m=a*bl+b*al;
n=al*bl;
   }
   else
   {
    n=modfast(10,at);
    m=a;
}
long long k=gcd(n,m);
while(k!=1)
{
n/=k;
m/=k;
k=gcd(n,m);
}
printf("%lld/%lld\n",m,n);
}
return 0;
}
long long gcd(long long a,long long b)//左大右小
{
    return b==0?a:gcd(b,a%b);
}
long long modfast(long long x,long long y)
{
    long long ans=1;
    while(y)
    {
        if(y&1) ans=ans*x;
        x=x*x;
        y>>=1;
    }
    return ans;
}

HDU 1717 数学相关推荐

  1. hdu 1717 小数化分数2(数学)

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

  2. hdu 5419(数学期望)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5419 题解: 首先分母是C(m,3),考虑如何求出分子 考虑数学期望的独立性,我们首先可以用线性的时间 ...

  3. hdu 5587(数学规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5587 解题思路: 首先可以预处理第i天有多少个数以及前i天的数之和. 接下来就可以先二分找到最大的天数 ...

  4. hdu 5570(数学期望)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5570 [分析] 用A[i][j]表示第i个球为颜色j的概率 用c[j]表示颜色为j的球的个数 用E[x ...

  5. hdu 5481(数学期望+区间合并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5481 题解: 实际上求的是所有子集的并集长度之和. 把坐标离散化之后,可以单独考虑每一段区间在并集内部 ...

  6. HDU - 4586 数学期望

    题意 有一个骰子有n个面,掷到每一个面的概率是相等的,每一个面上都有相应的钱数.其中当你掷到某些面 一共m个面之一时,你有多掷一次的机会.问最后所得钱数的期望. 分析 数学期望是什么 数学期望就是一种 ...

  7. 2019杭电多校第7场 K Kejin Player HDU 6656(数学推导)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题目大意:对于每一个等级,可以花ai元,有pi概率升级,如果升级失败就退到xi级,问从li级升到 ...

  8. HDU 4808 数学 期望 积分

    HDU 4808 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4808 题意: 在一个多维空间中,一个人从原点迈出一步,这步最多R那么长.问其中一维 ...

  9. hdu 4530(数学)

    小Q系列故事--大笨钟 Time Limit: 600/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total ...

最新文章

  1. 利用getchar()消除多余字符数据(主要是“回车”)
  2. cglib中Enhancer的简单使用
  3. 腾讯机智在GTC 2019
  4. PropertyGrid中的枚举显示为中文(转)
  5. Springboot: Failed to get nested archive for entry BOOT-INF/lib/ Zip64 archives are not supported
  6. y查询硬盘内存CPU
  7. Yahei Consolas Hybrid------解决eclipse中文汉字太小问题
  8. 关于svn服务部署方案
  9. python文件管不了_Python文件_管道与模块编写
  10. c#电子教鞭(屏幕画笔)快捷键ctrl+q
  11. 动软代码生成器连接oracle数据库
  12. 配合python的rich库实现高颜值LOL服务器状态查询
  13. win10 电脑蓝牙无法使用无法连接问题的一种神奇解决办法
  14. .m3u8视频格式转换
  15. 10+ 张图来探究 Linux 内核,以及如何高效学习
  16. Office快捷键大全之四(Frontpage快捷键)
  17. RocketMQ源码系列(一) NameServer 核心源码解析
  18. 2010 我的求职经历(4)
  19. python idle快捷键
  20. David Silver强化学习——介绍

热门文章

  1. Python Matplotlib 简易入门学习画图
  2. 【专精特新周报】北交所进入“百企”时代 ,上市后备军充足;贝特瑞拟定增资50亿元,创北交所最大规模再融资记录;上海:年内……...
  3. 基于OHCI的USB主机 —— UFI读容量代码
  4. SVN 给文件 设置不提交
  5. 《绿光森林》惹争议 收视冠军也是挨骂冠军
  6. Windows 8 Metro App开发[8]处理Fullscreen, Snapped和Filled状态
  7. css界面内容可滚动_带有CSS滚动捕捉点的直观滚动界面
  8. 利用sfntly的sfnttool.jar提取中文字体
  9. vmware P2V问题汇总
  10. Discuz! X2如何禁止帖子发外链和签名链接