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
爆搜
代码如下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define ll long long
#define inf 2147483647
using namespace std;
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int ans=2,t=1;
if(n%2==0||n==1){
printf("2^? mod %d = 1\n",n);
}else{
while(ans!=1){
ans*=2;
ans%=n;
t++;
}
printf("2^%d mod %d = 1\n",t,n);
}
}
return 0;
}