zoj 1489 2^x mod n = 1
来源:互联网 发布:光盘数据恢复 编辑:程序博客网 时间:2024/06/07 03:40
题目大意:给定一个n,求出最小的x满足2^x%n==1,如过存在就输出x不存在就输出?
首先这题我们可以很直观的看出,n若为偶数,则必定不存在,因为2^x必定为偶数,偶数对偶数取余,不可能为奇数
那么接下来就只用看n为奇数的情况了,其实n为奇数的时候一定存在,现在给出证明
根据鸽巢原理,可知一定存在同余的情况假设2^x2>2^x1,且同余数,则有
(2^x2-2^x1)%n==0
2^x1(2^(x2-x1)-1)%n==0
又因为2^x1%n为奇数
所以2^(x2-x1)%n==1成立
故可知x的取值范围一般在1~n之间
所以如果n为偶数时可以直接判断,n为奇数暴力求解即可
#include <bits/stdc++.h>using namespace std;int main(){int n;while(~scanf("%d",&n)){if (n%2==0||n<3){printf("2^? mod %d = 1\n",n);}else{int ans=1;for (int i=1;;i++){ans=ans*2;if (ans%n==1){printf("2^%d mod %d = 1\n",i,n);break;}ans=ans%n;}}}return 0;}
0 0
- zoj 1489 2^x mod n = 1
- zoj 1489 2^x mod n = 1
- ZOJ 1489 2^x mod n = 1 数论
- zoj 1489 2^x mod n = 1
- ZOJ - 1489 2^x mod n = 1
- ZOJ 1489 HDU1395 2^x mod n = 1 数学
- zoj ——1489——2^x mod n = 1
- 2^x mod n = 1
- ZOJ1489 2^x mod n = 1
- HDU1395:2^x mod n = 1
- zoj1489-2^x mod n = 1
- hdu1395-2^x mod n = 1
- hdu1395 2^x mod n = 1
- 1073:2^x mod n = 1
- HDU1395---2^x mod n = 1
- HDU 2^x mod n = 1
- hdu1395 2^x mod n = 1
- HDU_1395 2^x mod n = 1
- js 如何避免鼠标单击和双击冲突
- poj2376
- (hdu 简单题 128道)平方和与立方和(求一个区间的立方和和平方和)
- file
- LeetCode OJ : Remove Duplicates from Sorted Array
- zoj 1489 2^x mod n = 1
- #2002 - 服务器没有响应or the local MySQL server's socket
- XCode6以后pch文件的添加
- HADOOP常用命令
- POJ 1324 贪吃蛇状态压缩BFS
- 关于闭包
- 浅谈Objective-C异常处理
- js优化
- time_t 与字符串之间的相互转换