啊居然要特判,卡了好久QAQ (好像Windows下的rand和Linux下的不一样? QwQ一些东西参考了喵铃的这篇blog:http://www.cnblogs.com/meowww/p/6400841.html  (业界良心) 题目 题意:输入$n$,求$phi(n)$,$n \leq 10^{18}$ 随便抽的题,刚好学习一下相关的算法. 很明显朴素的根号算法时间复杂度补滋兹,线性筛更不用想了,不过这题只需要单个欧拉函数值,还是直接考虑$phi(n)=n*\prod_{i=1}^k(1-…
Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sample Input 8 Sample Output 4 Solution 一开始读错题了……以为是求约束个数和…… 读对题之后然后发现我不会就问旁边的宽嫂…… 宽嫂:这不是欧拉函数的定义式么?我初中就会了啊. 我:…
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4802 [题解] 参考:http://www.matrix67.com/blog/archives/234 Millar-Rabin质数检验方法: 根据费马小定理,如果p是素数,a<p,那么有a^(p-1) mod p = 1. 直观想法我们直接取若干个a,如果都有一个不满足,那么p就是合数. 遗憾的是,存在Carmichael数:你无论取多少个a,有一个不满足,算我输. 比如:561 =…
题目 求大数的欧拉函数φ\varphiφ 题解 Pollard-Rho 板子 CODE #pragma GCC optimize (3) #include <bits/stdc++.h> using namespace std; typedef long long LL; inline LL mul(LL a, LL b, LL p) { a=(a%p+p)%p, b=(b%p+p)%p; return (((a*b)-(LL)((long double)a*b/p)*p)%p+p)%p; }…
传送门 Pollard−rhoPollard-rhoPollard−rho模板题. 题意简述:求ϕ(n),n≤1e18\phi(n),n\le 1e18ϕ(n),n≤1e18 先把nnn用Pollard−rhoPollard-rhoPollard−rho分解质因数,然后就可以算了. 代码: #include<bits/stdc++.h> #include<tr1/unordered_map> #define ri register int using namespace std;…
原文链接http://www.cnblogs.com/zhouzhendong/p/8117744.html 题目传送门 - BZOJ4802 题意概括 Description 已知N,求phi(N) Input 正整数N.N<=10^18 题解 Miller_Rabin+Pollard_Rho 至于Pollard_Rho,我感到很奇怪.判定的时候为何不能丢第一个值!! 请看下面两个代码,第一个对的,第二个错的…… 代码 #include <cstring> #include <c…
bzoj description 给出\(n\),求\(\varphi(n)\).\(n\le10^{18}\) sol \(Pollard\ Rho\),存个代码. code #include<cstdio> #include<algorithm> #include<ctime> using namespace std; #define ll long long ll p[100],len; ll mul(ll x,ll y,ll mod){ x%=mod;y%=mo…
开始一直T,原来是没有srand- CODE #include<bits/stdc++.h> using namespace std; typedef long long LL; vector<LL>arr; inline LL multi(LL a, LL b, LL p) { LL re = a * b - (LL)((long double) a / p * b + 1e-8) * p; return re < 0 ? re + p : re; } LL gcd(LL…
欧拉函数 :欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) . 完全余数集合:定义小于 n 且和 n 互质的数构成的集合为 Zn ,称呼这个集合为 n 的完全余数集合. 显然 |Zn| =φ(n) . 有关性质:对于素数 p ,φ(p) = p -1 .对于两个不同素数 p, q ,它们的乘积 n = p * q 满足 φ(n) = (p -1) * (q -1)  .这是因为 Zn = {1, 2, 3,…
[BZOJ4802]欧拉函数(Pollard_rho) 题面 BZOJ 题解 这么大的范围肯定不好杜教筛. 考虑欧拉函数的计算式,显然只需要把\(n\)分解就好了. 直接\(Pollard\_rho\) #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include&…