HDU 2619 - Love you Ten thousand years (数论)
2015-02-22 17:26
246 查看
题意
求出小于n的数的个数,满足kimodn,1≤i≤n是模n的完全剩余系思路
请教了SkyWalkerT巨巨。其实是一个结论题。
对正整数(a,m)=1,如果 a 是模 m 的原根,那么 a 是整数模n乘法群(即加法群 Z/mZ 的可逆元,也就是所有与 m 互素的正整数构成的等价类构成的乘法群)Zn×的一个生成元。由于Zn×有 φ(m)个元素,而它的生成元的个数就是它的可逆元个数,即 φ(φ(m))个,因此当模m有原根时,它有φ(φ(m))个原根。
代码
#include <stack> #include <cstdio> #include <list> #include <cassert> #include <set> #include <iostream> #include <string> #include <vector> #include <queue> #include <functional> #include <cstring> #include <algorithm> #include <cctype> #include <string> #include <map> #include <cmath> using namespace std; #define LL long long #define ULL unsigned long long #define SZ(x) (int)x.size() #define Lowbit(x) ((x) & (-x)) #define MP(a, b) make_pair(a, b) #define MS(arr, num) memset(arr, num, sizeof(arr)) #define PB push_back #define X first #define Y second #define ROP freopen("input.txt", "r", stdin); #define MID(a, b) (a + ((b - a) >> 1)) #define LC rt << 1, l, mid #define RC rt << 1|1, mid + 1, r #define LRT rt << 1 #define RRT rt << 1|1 const double PI = acos(-1.0); const int INF = 0x3f3f3f3f; const double eps = 1e-8; const int MAXN = 1e7 + 2; const int MOD = 1e9 + 7; const int dir[][2] = { {-1, 0}, {0, -1}, { 1, 0 }, { 0, 1 } }; int cases = 0; typedef pair<int, int> pii; LL get_phi(int n) { int m = (int)sqrt(n+0.5); int ans = n; for (int i = 2; i <= m; i++) if (n % i == 0) { ans = ans / i * (i-1); while (n % i == 0) n /= i; } if (n > 1) ans = ans / n * (n-1); return ans; } int main() { int n; while (~scanf("%d", &n)) { printf("%d\n", get_phi(get_phi(n))); } return 0; }
相关文章推荐
- hdu 2619 Love you Ten thousand years(数论,待解决)
- HDU 2653 Waiting ten thousand years for Love
- HDU 2653 Waiting ten thousand years for Love
- HDU 2653 Waiting ten thousand years for Love
- HDU 2653 Waiting ten thousand years for Love(bfs+优先队列)
- hdu Waiting ten thousand years for Love
- Hdu 2579 Dating with girls(2) && hdu 2653 Waiting ten thousand years for Love【Bfs】
- HDU 2653 - Waiting ten thousand years for Love
- HDU 2653 Waiting ten thousand years for Love
- hdoj 2653 Waiting ten thousand years for Love(优先队列+BFS)
- hdoj 2653 - Waiting ten thousand years for Love
- 4.2.7 Waiting ten thousand years for Love
- hdu2653 Waiting ten thousand years for Love
- HDU 2625 Say love to you once again
- hdu 1214 圆桌会议 数论 How strong I want to love you again!
- hdu 2816(I Love You Too)(STL)
- I love you a million years
- HDU 2816 I Love You Too [Ad Hoc]
- HDU 2816 I Love You Too
- HDU 2816 I Love You Too