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%=mod;ll res=0;
while(y){if(y&1)res=(res+x)%mod;x=(x+x)%mod;y>>=1;}
return res;
}
ll fastpow(ll x,ll y,ll mod){
x%=mod;ll res=1;
while(y){if(y&1)res=mul(res,x,mod);x=mul(x,x,mod);y>>=1;}
return res;
}
bool MR(ll n){
if (n==2) return true;
for (int i=1;i<=10;++i){
ll x=1ll*rand()*rand()%(n-2)+2,p=n-1;
if (fastpow(x,p,n)!=1) return false;
while (~p&1){
p>>=1;ll y=fastpow(x,p,n);
if (mul(y,y,n)==1&&y!=1&&y!=n-1) return false;
}
}
return true;
}
ll PR(ll n,ll c){
ll i=0,k=2,x,y;x=y=1ll*rand()*rand()%(n-1)+1;
while (1){
x=(mul(x,x,n)+c)%n;
ll d=__gcd((y-x+n)%n,n);
if (d!=1&&d!=n) return d;
if (x==y) return n;
if (++i==k) y=x,k<<=1;
}
}
void fact(ll n,ll c){
if (n==1) return;
if (MR(n)) {p[++len]=n;return;}
ll p=n,k=c;
while (p>=n) p=PR(p,c--);
fact(p,k);fact(n/p,k);
}
int main(){
ll n;scanf("%lld",&n);fact(n,666);
sort(p+1,p+len+1);len=unique(p+1,p+len+1)-p-1;
ll res=n;
for (int i=1;i<=len;++i) res=res/p[i]*(p[i]-1);
printf("%lld\n",res);
return 0;
}

[BZOJ4802]欧拉函数的更多相关文章

  1. bzoj4802 欧拉函数(附Millar-Rabin和Pollard-Rho讲解)

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4802 [题解] 参考:http://www.matrix67.com/blog/archiv ...

  2. BZOJ4802:欧拉函数(Pollard-Rho,欧拉函数)

    Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sample Input 8 Sample Output 4 Soluti ...

  3. BZOJ4802 欧拉函数 (Pollard-Rho Miller-Robin)

    题目 求大数的欧拉函数φ\varphiφ 题解 Pollard-Rho 板子 CODE #pragma GCC optimize (3) #include <bits/stdc++.h> ...

  4. [日常摸鱼]bzoj4802 欧拉函数-PollardRho大整数分解算法

    啊居然要特判,卡了好久QAQ (好像Windows下的rand和Linux下的不一样? QwQ一些东西参考了喵铃的这篇blog:http://www.cnblogs.com/meowww/p/6400 ...

  5. BZOJ4802 欧拉函数 数论

    原文链接http://www.cnblogs.com/zhouzhendong/p/8117744.html 题目传送门 - BZOJ4802 题意概括 Description 已知N,求phi(N) ...

  6. 2018.12.17 bzoj4802: 欧拉函数(Pollard-rho)

    传送门 Pollard−rhoPollard-rhoPollard−rho模板题. 题意简述:求ϕ(n),n≤1e18\phi(n),n\le 1e18ϕ(n),n≤1e18 先把nnn用Pollar ...

  7. 【BZOJ4802】欧拉函数(Pollard_rho)

    [BZOJ4802]欧拉函数(Pollard_rho) 题面 BZOJ 题解 这么大的范围肯定不好杜教筛. 考虑欧拉函数的计算式,显然只需要把\(n\)分解就好了. 直接\(Pollard\_rho\ ...

  8. BZOJ 4802 欧拉函数

    4802: 欧拉函数 Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sample Input 8 Sample Outp ...

  9. bzo4802 欧拉函数 miller_rabin pollard_rho

    欧拉函数 Time Limit: 5 Sec  Memory Limit: 256 MBSubmit: 1112  Solved: 418[Submit][Status][Discuss] Descr ...

随机推荐

  1. mysql8新特性(一)

    https://www.oschina.net/news/95325/mysql-8-0-ga-released http://blog.itpub.net/28218939/viewspace-21 ...

  2. db2,oracle,mysql ,sqlserver限制返回的行数

    不同数据库限制返回的行数的关键字如下: ①db2 select * from table fetch first 10 rows only; ②oracle select * from table w ...

  3. 使用idea 搭建Spring+mybatis

    1.file-new-project 项目的结构如下: 在WEB-INF 下面新建一个 文件夹lib 右键WEB-INF ,new-Directory 所需要的jar 包有: lib下载地址: 网盘地 ...

  4. Eclipse自动提示

    在java的自动激活触发器里输入:abcdefghijklmnopqrstuvwxyz.

  5. 20145106 《Java程序设计》第1周学习总结

    20145106 <Java程序设计>第1周学习总结 教材学习内容总结 因为我用的是Mac,所以教材内容暂时对我的编译java没有帮助.不过还好我也在同学和自己的帮助学习下初步学会了在Ma ...

  6. 20145201李子璇 《网络对抗》 Web安全基础实践

    1.实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:通过构建特殊的输入作为参数传入web应用程序.即把SQL命令注入到Web表单的输入域或页面请求的查询字符串,和之前已经设定好的查询语句构成 ...

  7. SDN前瞻 软件定义网络的一些概念

    SDN的核心:可编程性 SDN的思想:SOA面向服务 面向服务的体系结构(service-oriented architecture SOA) 使网络连接的大量计算机易于合作,以 服务 而不是人工交互 ...

  8. hadoop经典案例

    hadoop经典案例http://blog.csdn.net/column/details/sparkhadoopdemo.html

  9. java 中 Cannot make a static reference to the non-static 解决方法

    今天敲代码的时候遇到了这个问题,大体这个问题可以简化成这样: public class Test1 { public String get() { return "123"; } ...

  10. hdu 2204 Eddy's爱好 容斥原理

    Eddy's爱好 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem ...