思路:

循环小数化分数,枚举所有可能的循环节,取分母最小的那个。

实现:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4. using namespace std;
  5.  
  6. const int INF = 0x3f3f3f3f;
  7.  
  8. int gcd(int a, int b)
  9. {
  10. return !b ? a : gcd(b, a % b);
  11. }
  12.  
  13. int lcm(int a, int b)
  14. {
  15. return a / gcd(a, b) * b;
  16. }
  17.  
  18. int toNum(string s)
  19. {
  20. int n = s.length();
  21. int res = ;
  22. for (int i = ; i < n; i++)
  23. {
  24. res += s[i] - '';
  25. if (i != n - )
  26. res *= ;
  27. }
  28. return res;
  29. }
  30.  
  31. int main()
  32. {
  33. string s;
  34. while (cin >> s, s != "")
  35. {
  36. s = s.substr(, s.length() - );
  37. int n = s.length();
  38. int minn = INF;
  39. int minm = ;
  40. for (int i = ; i < n; i++)
  41. {
  42. int x = toNum(s.substr(i, n - i));
  43. int y = ;
  44. for (int j = ; j < n - i - ; j++)
  45. {
  46. y *= ;
  47. y += ;
  48. }
  49. for (int j = ; j < i; j++)
  50. {
  51. y *= ;
  52. }
  53. int p = toNum(s.substr(, i));
  54. int q = ;
  55. for (int j = ; j < i; j++)
  56. {
  57. q *= ;
  58. }
  59. int l = lcm(y, q);
  60. int tmp = l / y * x + l / q * p;
  61. int g = gcd(tmp, l);
  62. tmp /= g;
  63. l /= g;
  64. if (l < minn)
  65. {
  66. minn = l;
  67. minm = tmp;
  68. }
  69. }
  70. cout << minm << "/" << minn << endl;
  71. }
  72. return ;
  73. }

poj1930 Dead Fraction的更多相关文章

  1. uva 10555 - Dead Fraction)(数论)

    option=com_onlinejudge&Itemid=8&category=516&page=show_problem&problem=1496" st ...

  2. poj 1930 Dead Fraction(循环小数化分数)

    Dead Fraction Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3478   Accepted: 1162 Des ...

  3. UVA 10555 - Dead Fraction(数论+无限循环小数)

    UVA 10555 - Dead Fraction 题目链接 题意:给定一个循环小数,不确定循环节,求出该小数用分数表示,而且分母最小的情况 思路:推个小公式 一个小数0.aaaaabbb... 表示 ...

  4. Dead Fraction [POJ1930]

    题意: 很有意思的一道题,,将一个无限循环小数转化成分母最小的精确分数值....,循环的部分不一定是最后一位. Sample Input 0.2... 0.20... 0.474612399... 0 ...

  5. POJ 1930 Dead Fraction

    POJ 1930 Dead Rraction 此题是一个将无限循环小数转化为分数的题目 对于一个数 x=0.abcdefdef.... 假设其不循环部分的长度为m(如abc的长度为m),循环节的长度为 ...

  6. Mathematics:Dead Fraction(POJ 1930)

    消失了的分式 题目大意:某个人在赶论文,需要把里面有些写成小数的数字化为分式,这些小数是无限循环小数(有理数),要你找对应的分母最小的那个分式(也就是从哪里开始循环并不知道). 一开始我也是蒙了,这尼 ...

  7. POJ 1930 Dead Fraction (循环小数-GCD)

    题意:给你一个循环小数,化成分数,要求分数的分母最小. 思路:暴力搜一遍循环节 把循环小数化分数步骤: 纯循环小数化分数 纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位 ...

  8. poj1930 数论

    Dead Fraction Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1258   Accepted: 379 Desc ...

  9. POJ 1930

    Dead Fraction Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1762   Accepted: 568 Desc ...

随机推荐

  1. Linux 简单的Shell输出

    echo:用于输出指定字符串或用于在Shell中打印Shell变量的值    语法格式:echo [选项] [参数]    -n:不输出换行 linlin@ubuntu:~/linlin/text$ ...

  2. Android之键盘监听的执行机理【看清键盘监听的本质】【入门版】

    以EditText为例: 1.Activity本身也有按键监听 editText按键监听与Activity按键监听关系: Activity本身也有按键监听 并且分按下和松开两个事件监听 editTex ...

  3. oracle 导出导入不含数据的空库

    10g或之前,用exp导出,imp导入,带上rows=n参数 11g或以上,用expdp导出,impdp导入,带上CONTENT = METADATA_ONLY 参数 expdp带上此参数,不导出数据 ...

  4. SpringMVC_架构 --跟海涛学SpringMVC(学习笔记)

    重点: 1.工作流程及实现原理 2.配置及使用方法 3.共同函数 前言 1.2.模型: 1.2.1.此处模型使用JavaBean,可能造成JavaBean组件类很庞大,一般现在项目都是采用三层架构,而 ...

  5. Koa2学习(八)使用session

    Koa2学习(八)使用session koa2框架不提供session的处理方法,这里我们需要借助一个第三方中间件koa-session来处理session. 先安装插件: $ npm i koa-s ...

  6. Ubuntu 12.10安装vmware-tools

    1:[菜单]->[虚拟机]->[重新安装vmware tools]出现 图中下边说的很清楚,解压然后执行 2:把压缩包拷贝到 /home/下,然后执行 :tar -zxvf v[按住tab ...

  7. Mac 中安装 Apache Ant

    1.下载Apache Ant:http://ant.apache.org/bindownload.cgi 2.解压apache-ant-1.9.6-bin.zip,把解压好的apache-ant-1. ...

  8. RobotFrameWork--selenium2模拟chrome的user agent

    ${options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver ${opt ...

  9. leetcode 戳气球

    有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[ ...

  10. SDK介绍

    软件开发工具包(外语首字母缩写:SDK.外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件时的开发工具的集合. ...