hdu 1359
分析:
当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 }
原文:http://www.cnblogs.com/zn505119020/p/3576750.html