X-man

导航

hdu 1395(2^x mod n = 1)

分析:

      1、n==1或者n%2==0,都不会有这样的2的幂次存在。

          因为2^k(k=1、2、3...)为偶数,n为偶数时显然不存在;n==1则容易验证。

      2、n为奇数是则一定存在。

          n为奇数,则至少会存在一个偶数模取n等于1。2^k则会找到所有的偶数。

#include<stdio.h>
int main()
{
    int n,x;
    int i;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==1||n%2==0)printf("2^? mod %d = 1\n",n);
        else
        {
            int s=1;
            for(i=1;;i++)
            {
                s=s*2%n;
                if(s==1)break;
            }
            printf("2^%d mod %d = 1\n",i,n);
        }
    }
    return 0;
}

 

posted on 2013-04-27 23:04  雨钝风轻  阅读(149)  评论(0编辑  收藏  举报