刚开始没看到是多组输入,一直WA。
这题暴力求解即可
当然,同余方程
1.反身性:a≡a (mod m);
2.对称性:若a≡b(mod m),则b≡a (mod m);
3.传递性:若a≡b(mod m),b≡c(mod m),则a≡c(mod m);
4.同余式相加:若a≡b(mod m),c≡d(mod m),则a
c≡b
d(mod m);
5.同余式相乘:若a≡b(mod m),c≡d(mod m),则ac≡bd(mod m)。
防止数字过大TLE,即使是2^100也能秒出。
#include<iostream>
using namespace std;
int main(){
long long n,value = 1;
while(cin>>n)
{
if(n%2==0||n==1) cout<<"2^? mod "<<n<<" = 1"<<endl;
else{
for(int i = 1;;i++){
value = value*2%n;
if(value % n==1){
cout<<"2^"<<i<<" mod "<<n<<" = 1"<<endl;
break;
}
}
}
}
return 0;
}