zoukankan      html  css  js  c++  java
  • hdu 数论专题

    hdu 1359

    2^x mod n = 1

    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

    分析:

    当n==1 || n为偶数时 ,2^x mod n != 1 ; 故 n>1 且 n 为奇数时 ,从2开始遍历能找到x ,使等式成立。

    2^x % n = (2^a %n) *(2^b%n)%n;  其中 x= a+b.

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<string>
     4 #include<string.h>
     5 #include<map>
     6 #include<math.h>
     7 
     8 using namespace std;
     9 
    10 int main()
    11 {
    12     int n;
    13     while(cin>>n)
    14     {
    15         int mi,tmp;
    16         if(n==1 || n%2==0)
    17             cout<<"2^? mod "<<n<<" = 1"<<endl;
    18         else
    19         {
    20             mi=1;
    21             tmp=2;
    22             while(tmp!=1)
    23             {
    24                 tmp=tmp*2%n;
    25                 mi++;
    26             }
    27             cout<<"2^"<<mi<<" mod "<<n<<" = 1"<<endl;
    28         }
    29 
    30     }
    31 
    32     return 0 ;
    33 }
  • 相关阅读:
    01:求平均年龄
    09:与圆相关的计算
    08:温度表达转化
    07:计算多项式的值
    06:甲流疫情死亡率
    05:计算分数的浮点数值
    04:带余除法
    03:计算(a+b)/c的值
    02:计算(a+b)*c的值
    01:A+B问题
  • 原文地址:https://www.cnblogs.com/zn505119020/p/3576750.html
Copyright © 2011-2022 走看看