HDOJ-1395-2^x mod n = 1 解题报告
来源:互联网 发布:软件著作权的源代码 编辑:程序博客网 时间:2024/05/17 04:33
欧拉定理,可暴力。题意:给一个整数n求满足2^x = 1(mod n)的最小x(x > 1)。
我的解题思路:根据欧拉定理及其推广,当n与2互素时2^phi(n) = 1(mod n),因此容易得知当n为奇数时n与2互素。当n为偶数或者1时则必定不能满足2^x = 1(mod n)。另外,当n与2互素时phi(n)不一定是满足要求的最小x,但是根据欧拉定理的推广,最小x必定能整除phi(n),因此枚举phi(n)的因子就可以了。
我的解题代码:
#include <cstdio>#include <cstdlib>#include <cstring>#include <cctype>#include <cmath>#include <algorithm>using namespace std;typedef long long Long;Long n;Long FastPow(Long base, Long n, Long mod);Long Phi(Long x);int main(){ while (~scanf("%lld", &n)) { if (n % 2 == 0 || n == 1) { printf("2^? mod %lld = 1\n", n); continue; } Long temp = Phi(n); for (Long i=2; i<=temp; ++i) { if (temp % i != 0) continue; //G++下加了这句就60+ms,不加就700+ms,Orz if (FastPow(2, i, n) == 1) { printf("2^%lld mod %lld = 1\n", i, n); break; } } } return 0;}Long FastPow(Long base, Long n, Long mod){ Long ans = 1; base %= mod; while (n) { if (n & 1) { ans *= base; ans %= mod; } base *= base; base %= mod; n >>= 1; } return ans;}Long Phi(Long x){ Long ans = x; Long cnt = (Long)sqrt(x + 0.5) + 1; for (Long i=2; i<cnt; ++i) { if (x % i == 0) { while (x % i == 0) x /= i; ans -= ans / i; } } if (x > 1) ans -= ans / x; return ans;}
0 0
- HDOJ-1395-2^x mod n = 1 解题报告
- 【HDOJ】1395 -> 2^x mod n = 1
- 2^x mod n = 1 hdoj 1395
- hdoj.1395 2^x mod n = 1 20140725
- hdoj 1395 2^x mod n = 1 【暴力】
- hdoj 1395 2^x mod n = 1
- HDOJ 2^x mod n = 1 1395
- HDOJ 1395 2^x mod n = 1
- HDOJ 1395 2^x mod n = 1
- hdoj 1359 2^x mod n = 1
- 1395 2^x mod n = 1
- HDU/HDOJ 1395 ACM浙大月赛 2^x mod n = 1
- HDOJ 题目1395 2^x mod n = 1(水题 易错)
- 2^x mod n = 1 【杭电-HDOJ-1395】 附题
- hdoj-1395-2^x mod n = 1【欧拉定理】
- HDOJ 1316 2^x mod n = 1
- 2^x mod n = 1
- ZOJ1489 2^x mod n = 1
- Unity 动画(UITweener)、协程(Coroutine)和委托(Delegate)队列管理
- 1-1. Interview Guide
- Linux下vsFTP配置全方案(限制用户/端口/速度/空间)
- Gentoo文档翻译——安装Gentoo(2) 硬件要求
- Andriod Splash闪屏
- HDOJ-1395-2^x mod n = 1 解题报告
- 约束
- 1-2. Computer Hardware Engineer
- Android下拉刷新研究(二)
- Android中dp 与 px 的转换
- samba配置文件注释
- 1-3. Software Engineer
- thinkphp 3.2 Lite文件替换框架入口文件/应用入口文件
- 『IOS』mac svn 命令