zoukankan      html  css  js  c++  java
  • 二进制下 求分数化小数的循环节问题

    表示还没理解过程,先贴个模版吧,套用在十进制下的求分数化小数的循环节答案不对。

    #include <iostream>
    #include<cstdio>
    using namespace std;
    
    int gcd(int a,int b)
    {
        return b?gcd(b,a%b):a;
    }
    
    int euler(int n)
    {
        int phi=n;
        int top=n;
        for(int i=2;i*i<=top;i++)
        {
            if(n%i==0)
            {
                phi=phi/i*(i-1);
                while(n%i==0) n/=i;
            }
        }
        if(n>1) phi=phi/n*(n-1);
        return phi;
    }
    
    int pow_mod(__int64 a,__int64 b,__int64 n)
    {
        __int64 t=1;
        a%=n;
        while(b)
        {
            if(b&1) t=t*a%n;
            a=a*a%n;
            b>>=1;
        }
        return t;
    }
    
    int main()
    {
        int n,m,d,t,ans1,ans2,phi,i,Case=0;
        char ch;
        while(~scanf("%d%c%d",&n,&ch,&m))
        {
            Case++;
            d=gcd(n,m);
            n/=d;m/=d;t=0;
            while(m%2==0)
                t++,m>>=1;
            ans1=t+1;
            phi=euler(m);
            ans2=phi;
            for(i=2;i*i<phi;i++)
            {
                if(phi%i) continue;
                d=pow_mod(2,i,m);
                if(d==1 && ans2>i) ans2=i;
                d=pow_mod(2,phi/i,m);
                if(d==1 && ans2>phi/i) ans2=phi/i;
            }
            printf("Case #%d: %d,%d
    ",Case,ans1,ans2);
        }
        return 0;
    }
  • 相关阅读:
    python 类函数
    scala 排序
    php基础-面向对象
    PHP基础-常用的数组相关处理函数
    PHP基础-PHP中预定义的超全局数组
    PHP基础-数组
    装饰器
    Python3.x 文件操作练习
    Python3.x 文件操作
    Python3 内置函数
  • 原文地址:https://www.cnblogs.com/xiong-/p/3245370.html
Copyright © 2011-2022 走看看