zoukankan      html  css  js  c++  java
  • HDU 1395

     

    2^x mod n = 1

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 16883    Accepted Submission(s): 5262


    Problem Description
    Give a number n, find the minimum x(x>0) that satisfies 2^x mod n = 1.
     
    Input
    One positive integer on each line, the value of n.
     
    Output
    If the minimum x exists, print a line with 2^x mod n = 1.

    Print 2^? mod n = 1 otherwise.

    You should replace x and n with specific numbers.
     
    Sample Input
    2 5
     
    Sample Output
    2^? mod 2 = 1 2^4 mod 5 = 1
     
    #include "stdio.h"
    int main()
    {
        int n;
        while(~scanf("%d",&n)&&n){
            if(n==1||n%2==0){
                printf("2^? mod %d = 1
    ",n);
                continue;
            }
            else{
                int x=1,mut=2;
                mut%=n;
                while(mut!=1){
                    x++;
                    mut=mut*2%n;
                }
                printf("2^%d mod %d = 1
    ",x,n);
            }
        }
        return 0;
    }

    开始时Time Limit Exceeded

    改进1.n==1情况  2.循环式取余,减少运算量

  • 相关阅读:
    Light oj 1197
    UVA 11426 GCD
    Light oj 1236
    Light oj 1138
    Light oj 1214-Large Division (同余定理)
    Light oj 1234
    HDU
    ZOJ 3469 Food Delivery(* 区间DP 总结)
    二分查找整理
    zoj 3965 Binary Tree Restoring(* dfs)
  • 原文地址:https://www.cnblogs.com/kimsimple/p/6545402.html
Copyright © 2011-2022 走看看