zoukankan      html  css  js  c++  java
  • Project Euler Problem 26 Reciprocal cycles

    Reciprocal cycles

    Problem 26

    A unit fraction contains 1 in the numerator. The decimal representation of the unit fractions with denominators 2 to 10 are given:

    1/2

    0.5

    1/3

    0.(3)

    1/4

    0.25

    1/5

    0.2

    1/6

    0.1(6)

    1/7

    0.(142857)

    1/8

    0.125

    1/9

    0.(1)

    1/10

    0.1

    Where 0.1(6) means 0.166666..., and has a 1-digit recurring cycle. It can be seen that1/7 has a 6-digit recurring cycle.

    Find the value of d < 1000 for which 1/d contains the longest recurring cycle in its decimal fraction part.



    C++:

    #include <iostream>
    
    using namespace std;
    
    const int N = 1000;
    const int MAXDIGITS = 4096;
    
    int decimal[MAXDIGITS];
    int numerator[MAXDIGITS];
    
    int getcycles(int d)
    {
        int n = 1, start, end, i, j;
    
        i=0;
        numerator[i] = n % d;
        decimal[i] = numerator[i] * 10 / d;
    
        for(i=1; ;i++) {
            numerator[i] = numerator[i-1] * 10 % d;
            decimal[i] = numerator[i] * 10 / d;
    
            for(j=0; j<i; j++)
                if(numerator[j] == numerator[i])
                    break;
            if(j < i) {
                start = j;
                end = i - 1;
                break;
            }
            if(numerator[i] == 0) {
                start = i;
                end = i;
                break;
            }
        }
    
        return end - start + 1;
    }
    
    int main()
    {
        int ans, max = 0, cycles;
    
        for(int i=1; i<N; i++) {
            cycles = getcycles(i);
            if(cycles > max) {
                max = cycles;
                ans = i;
            }
    
            cout << i << ": " << cycles << endl;
        }
    
        cout << ans << endl;
    
        return 0;
    }


    参考链接:UVA202 UVALive5141 Repeating Decimals



  • 相关阅读:
    preprocess
    数组
    共用体
    动态内存管理函数
    C链表
    文件的定位与出错检查
    字符串读写函数
    C文件操作
    位运算
    爱好-超级IP:超级IP
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563984.html
Copyright © 2011-2022 走看看