[HDOJ1395]2^x mod n = 1(欧拉函数)
2016-08-31 19:10
302 查看
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1395
题意:给出n,找2^x mod n = 1的最小的x。
欧拉函数是费马小定理的一个特殊应用:2^phi(x)=1 (mod x),当且仅当x为素数的时候式子成立,因为x为素数时,比x小且与x互质的数的个数为x-1,即满足费马小定理2^(x-1)=1(mod x)。
题意:给出n,找2^x mod n = 1的最小的x。
欧拉函数是费马小定理的一个特殊应用:2^phi(x)=1 (mod x),当且仅当x为素数的时候式子成立,因为x为素数时,比x小且与x互质的数的个数为x-1,即满足费马小定理2^(x-1)=1(mod x)。
#include <algorithm> #include <iostream> #include <iomanip> #include <cstring> #include <climits> #include <complex> #include <fstream> #include <cassert> #include <cstdio> #include <bitset> #include <vector> #include <deque> #include <queue> #include <stack> #include <ctime> #include <set> #include <map> #include <cmath> using namespace std; #define fr first #define sc second #define cl clear #define BUG puts("here!!!") #define W(a) while(a--) #define pb(a) push_back(a) #define Rint(a) scanf("%d", &a) #define Rll(a) scanf("%I64d", &a) #define Rs(a) scanf("%s", a) #define Cin(a) cin >> a #define FRead() freopen("in", "r", stdin) #define FWrite() freopen("out", "w", stdout) #define Rep(i, len) for(int i = 0; i < (len); i++) #define For(i, a, len) for(int i = (a); i < (len); i++) #define Cls(a) memset((a), 0, sizeof(a)) #define Clr(a, x) memset((a), (x), sizeof(a)) #define Full(a) memset((a), 0x7f7f7f, sizeof(a)) #define lrt rt << 1 #define rrt rt << 1 | 1 #define pi 3.14159265359 #define RT return #define lowbit(x) x & (-x) #define onecnt(x) __builtin_popcount(x) typedef long long LL; typedef long double LD; typedef unsigned long long ULL; typedef pair<int, int> pii; typedef pair<string, int> psi; typedef pair<LL, LL> pll; typedef map<string, int> msi; typedef vector<int> vi; typedef vector<LL> vl; typedef vector<vl> vvl; typedef vector<bool> vb; const int maxn = 5500; LL n; LL geteular(LL x) { LL ret = 1; LL i; for(i = 1; i < maxn; i++) { ret *= 2; ret %= x; if(ret == 1) break; } return i; } int main() { // FRead(); while(cin >> n) { if(n == 1 || n % 2 == 0) { printf("2^? mod %I64d = 1\n", n); continue; } cout << "2^" << geteular(n) << " mod " << n << " = 1" << endl; } RT 0; }
相关文章推荐
- hdoj 1395 2^x mod n = 1 【暴力】
- hdoj1395 2^x mod n = 1
- hdu 1395 2^x mod n = 1(欧拉函数)
- hdoj1395 (数学水题)2^x mod n = 1
- HDOJ 1395 2^x mod n = 1
- 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【欧拉定理】
- HDOJ 1395 2^x mod n = 1
- HDOJ 题目1395 2^x mod n = 1(水题 易错)
- HDU/HDOJ 1395 ACM浙大月赛 2^x mod n = 1 可暴力 可用欧拉定理
- 【HDOJ】1395 -> 2^x mod n = 1
- HDU/HDOJ 1395 ACM浙大月赛 2^x mod n = 1
- hdoj 1395 2^x mod n = 1
- HDOJ-1395-2^x mod n = 1 解题报告
- HDOJ1395 2^x mod n = 1
- hdoj 1286 找新朋友(欧拉函数)
- HDOJ 3501 Calculation 2 (欧拉函数)
- hdoj-3501-Calculation 2-欧拉函数