1699: 2^x mod n = 1
时间限制: 1 Sec 内存限制: 32 MB
提交: 14 解决: 11
您该题的状态:已完成
[提交][状态][讨论版]
题目描述
给你一个正整数n,要求你找到最小的x(x>0)满足2^x mod n = 1。
输入
输入包含多组测试数据。每行一个正整数,代表n的值。
输出
如果最小的x存在,则输出2^x mod n = 1(注意x和n要用具体的值代替),否则输出2^? mod n = 1。
样例输入
<span style="color:#333333"><span style="color:black">2
5</span></span>
样例输出
<span style="color:#333333"><span style="color:black">2^? mod 2 = 1
2^4 mod 5 = 1</span></span>
提示
入门题
#include<iostream>
using namespace std;
long long quick_mod(int a,int b) 快速幂求解
{
long long ans=1;
while(b!=0)
{
if(b%2==1)
ans*=a;
a*=a;
b/=2;
}
return ans;
}
int main()
{
int n,i,j,t;
long long h=0;
while(~scanf("%d",&n))
{
for(i=1;i<100;i++)
{
h=quick_mod(2,i);
if(h%n==1)
{
cout<<"2^"<<i<<" mod "<<n<<" = 1"<<endl; 注意空格
break;
}
}
if(i==100)
cout<<"2^?"<<" mod "<<n<<" = 1"<<endl;
}
return 0;
}