zoukankan      html  css  js  c++  java
  • poj1930 Dead Fraction

    思路:

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

    实现:

     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 = 0;
    22     for (int i = 0; i < n; i++)
    23     {
    24         res += s[i] - '0';
    25         if (i != n - 1)
    26             res *= 10;
    27     }
    28     return res;
    29 }
    30 
    31 int main()
    32 {
    33     string s;
    34     while (cin >> s, s != "0")
    35     {
    36         s = s.substr(2, s.length() - 5);
    37         int n = s.length();
    38         int minn = INF;
    39         int minm = 0;
    40         for (int i = 0; i < n; i++)
    41         {
    42             int x = toNum(s.substr(i, n - i));
    43             int y = 9;
    44             for (int j = 0; j < n - i - 1; j++)
    45             {
    46                 y *= 10;
    47                 y += 9;
    48             }
    49             for (int j = 0; j < i; j++)
    50             {
    51                 y *= 10;
    52             }
    53             int p = toNum(s.substr(0, i));
    54             int q = 1;
    55             for (int j = 0; j < i; j++)
    56             {
    57                 q *= 10;
    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 0;
    73 }
  • 相关阅读:
    linux所有命令失效的解决办法
    第一章 网络基础知识
    RNQOJ 数列
    RNQOJ Jam的计数法
    RNQOJ 开心的金明
    RQNOJ 明明的随机数
    分类讨论的技巧
    Unity 碰撞检测
    Unity --yield return
    Unity 移动方式总结
  • 原文地址:https://www.cnblogs.com/wangyiming/p/6591184.html
Copyright © 2011-2022 走看看