hdu 1395 2^x mod n = 1 (简单数论)

题目大意:

求出一个最小的x

使得 2的x次方对n取模为1

思路分析:

若要

a*b%p=1  要使得b存在

则 gcd (a,p)=1.

那么我们应用到这个题目上来。

当n为偶数 2^x 也是偶数,那么gcd 肯定不是1.故这个是不存在的。

那么n为奇数的时候,也就一定是1了。

所以直接暴力找。

#include <iostream>
#include <cstdio>
using namespace std; int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==1 || n%2==0)
printf("2^? mod %d = 1\n",n);
else
{
int res=1;
for(int i=1;;i++)
{
res*=2;
res%=n;
if(res==1)
{
printf("2^%d mod %d = 1\n",i,n);
break;
}
}
}
}
return 0;
}
上一篇:hdu 1395 2^x mod n = 1(暴力题)


下一篇:hdu 1395 2^x mod n = 1 暴力过~~最好学下欧拉定理~~~