hdu 1395 2^x mod n = 1【欧拉定理】
hdu 1395 2^x mod n = 1【欧拉定理】
【题目大意】
输入n,找到符合方程2^x mod n = 1的最小x
【解题思路】
利用欧拉定理判定是否有解,由于欧拉函数得到的解不一定是最小解,所以通过试数的暴力方法解决问题。
【提交情况】
Wa若干,因为没明白欧拉函数得到的解不一定是最小解。
Tle若干,没考虑到输入时1的特殊情况,导致去掉2的倍数即偶数后,仍无解,进入死循环。
【AC的代码】
[code]
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
long n,ans,i,two,x;
while(scanf("%ld",&n)!=EOF)
{
if(n%2&&n>1)
{
two=1;
for(x=1;;x++)
{
two=two*2%n;
if(two==1) break;
}
printf("2^%ld mod %ld = 1\n",x,n);
}
else printf("2^? mod %ld = 1\n",n);
}
return 0;
}
[/code]
posted on 2010-03-05 10:25 liugoodness 阅读(131) 评论(0) 收藏 举报