灵异事件!!!

finalbug finalbug 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <iostream>
#include <climits>
using namespace std;

int cube(int i)
{
int count=0;
int check;
while(i>0)
{
check+=i%2;
count++;
i/=2;
}
if(check==1) return count-1;
else return -1;
}

int main()
{
int number;
while(!cin.eof())
{
cin >> number;
int a,b;
a=b=INT_MAX;
if(number==1)
{
cout << "2^? mod 1 = 1" <<endl;
continue;
}
if(number%2==0)
{
cout << "2^? mod "<< number <<" = 1" <<endl;
continue;
}
else
{
int i;
int temp;
for(i=1;i<INT_MAX;i++)
{

temp=cube(i*number+1);
//cout << temp << "\t"; //灵异行
if(temp>0)
{
cout <<"2^" << temp<< " mod "<<number<<" = 1" << endl;
break;
}
}
if(i==INT_MAX)
cout << "2^? mod "<<number<<" = 1" <<endl;
}
}
return 0;
}

如果把上面的注释行取消注释,则结果正确.比如输入5,输出应为:2^4 mod 5 = 1;
可如果注释掉,输入5后,就是2^? mod 2 = 1了.
高手赐教.
...全文
评论 2
收藏 已收藏
分享
返回顶部
finalbug
C++ 语言 65,214 成员 250,514 内容