BZOJ4802:欧拉函数(Pollard-Rho,欧拉函数)
Description
Input
Output
Sample Input
Sample Output
Solution
一开始读错题了……以为是求约束个数和……
读对题之后然后发现我不会就问旁边的宽嫂……
宽嫂:这不是欧拉函数的定义式么?我初中就会了啊。
我:aaarticlea/jpeg;base64,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" alt="" />
然后去百度了一发,发现一个数的欧拉函数就是
$\prod (p_i-1)*p_i^{k_i-1}$,其中$p_i$是这个数的质因子,$k_i$是这个质因子的次数……
然后套板子就行了。
发现我之前抄了个假的快速乘然后还花了我一会儿改代码+改博客……QAQ
Code
#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
#include<algorithm>
#define LL long long
using namespace std; LL n,ans=,Num[],cnt;
LL prime[]={,,,,,,,,,,};
map<LL,LL>Keg; LL Mul(LL a,LL b,LL MOD)
{
LL tmp=a*b-(LL)((long double)a*b/MOD+0.1)*MOD;
return tmp<?tmp+MOD:tmp;
} LL Qpow(LL a,LL b,LL MOD)
{
LL ans=;
while (b)
{
if (b&) ans=Mul(ans,a,MOD);
a=Mul(a,a,MOD); b>>=;
}
return ans;
} LL gcd(LL a,LL b) {return b==?a:gcd(b,a%b);} bool Miller_Rabin(LL n)
{
if (n==) return ;
if (n< || n%==) return ;
LL m=n-,l=;
while (m%==) m>>=, l++;
for (int i=; i<; ++i)
{
LL p=prime[i],w=Qpow(p,m,n);
if (w==n- || w== || p==n) continue;
for (int j=; j<=l; ++j)
{
LL u=Mul(w,w,n);
if (u== && w!=n- && w!=) return ;
w=u;
}
if (w!=) return ;
}
return ;
} LL Pollard_Rho(LL n,LL c)
{
LL x=(rand()+)%n,y=x,p=,k=;
for (LL i=; p==; ++i)
{
x=(Mul(x,x,n)+c)%n;
p=x>y?x-y:y-x;
p=gcd(p,n);
if (i==k) y=x, k=k+k;
}
return p;
} void Solve(LL n)
{
if (n==) return;
if (Miller_Rabin(n))
{
if (!Keg[n]) Num[++cnt]=n;
++Keg[n]; return;
}
LL t=n;
while (t==n) t=Pollard_Rho(n,rand()%(n-)+);
Solve(t); Solve(n/t);
} int main()
{
scanf("%lld",&n);
Solve(n);
for (int i=; i<=cnt; ++i)
ans=ans*(Num[i]-)*Qpow(Num[i],Keg[Num[i]]-,2e18);
printf("%lld\n",ans);
}
BZOJ4802:欧拉函数(Pollard-Rho,欧拉函数)的更多相关文章
- BZOJ_4802_欧拉函数_MR+pollard rho+欧拉函数
BZOJ_4802_欧拉函数_MR+pollard rho+欧拉函数 Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sa ...
- 积性函数&线性筛&欧拉函数&莫比乌斯函数&因数个数&约数个数和
只会搬运YL巨巨的博客 积性函数 定义 积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数 ...
- python中multiprocessing.pool函数介绍_正在拉磨_新浪博客
python中multiprocessing.pool函数介绍_正在拉磨_新浪博客 python中multiprocessing.pool函数介绍 (2010-06-10 03:46:5 ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- 初学Pollard Rho算法
前言 \(Pollard\ Rho\)是一个著名的大数质因数分解算法,它的实现基于一个神奇的算法:\(MillerRabin\)素数测试(关于\(MillerRabin\),可以参考这篇博客:初学Mi ...
- Miller-Rabin 素性测试 与 Pollard Rho 大整数分解
\(\\\) Miller-Rabin 素性测试 考虑如何检验一个数字是否为素数. 经典的试除法复杂度 \(O(\sqrt N)\) 适用于询问 \(N\le 10^{16}\) 的时候. 如果我们要 ...
- 全网最easy的better-scroll实现上拉加载和下拉刷新
前言 移动端页面常见的一种效果:下拉刷新(pulldownrefresh)和上拉加载(pullupload),目的都是为了增强用户的体验效果,因此各种移动端滑动插件也是层出不穷,今天小编也在这里给大家 ...
- 使用jquery结合ajax做下拉刷新页面,上拉加载页面,俗称分页
jquery结合iscroll.js做下拉刷新页面,上拉加载页面 先上代码,里面都有注释这就不一一说明了 <!DOCTYPE html> <html lang="en&qu ...
- Pollard Rho 算法简介
\(\text{update 2019.8.18}\) 由于本人将大部分精力花在了cnblogs上,而不是洛谷博客,评论区提出的一些问题直到今天才解决. 下面给出的Pollard Rho函数已给出散点 ...
- Pollard Rho算法浅谈
Pollard Rho介绍 Pollard Rho算法是Pollard[1]在1975年[2]发明的一种将大整数因数分解的算法 其中Pollard来源于发明者Pollard的姓,Rho则来自内部伪随机 ...
随机推荐
- git相关的简单命令
初次使用建议看这个ppt:http://www.bootcss.com/p/git-guide/ 从现有仓库克隆 这需要用到 git clone 命令.如果你熟悉其他的 VCS 比如 Subve ...
- 使用Homebrew安装Git与Github在idea中的配置
系统环境:macOS 10.13.4 一.Homebrew的安装 linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案,Red hat有yum,Ubuntu有apt ...
- 列表 enumerat 解包, 针对索引和元素
dic = [1,2,3,4,5] for a,b in enumerate(dic): print(a,b) # a就是索引 b是元素
- ACK-Ackermann, 阿克曼函数
以前好几次在学语言的使用都有实现这个ack函数的经历,今天读本算法书,偶尔又提到了这个,查了下wiki来头好大 Values of A(m, n) m\n 0 1 2 3 4 n 0 1 2 3 4 ...
- 使用display:none和visibility:hidden隐藏的区别
今天做毕设时遇到了一个小问题,我做了一个tab导航栏,点击一个tab页其它tab页隐藏,这时候第一想法是使用display:none来控制显示隐藏,写了之后发现使用display会有一个问题,就是第二 ...
- vs2017 + Python3.6 +Django1.11 连接mysql数据库
不废话直接来. vs2017创建一个新的python web项目之后默认链接数据库是sqlite.但是我就想连接到Mysql 上面玩,于是开始倒腾了.下面是步骤 1.修改settings.py 文件需 ...
- html5中高德、腾讯、百度 地图api调起手机app
html 部分 <div id="mapBg"> <div class="mapTab"> <a href="" ...
- 有用的linux指令(资料转载)
对 Linux 新手非常有用的20个命令 你打算从Windows换 ...
- Android MVP模式就是这么回事儿
MVP模式 概念就不说了,大家都懂.View层通过Persenter层相互通信,避免了View中大量的业务代码,而将其提取到Model中.其实简单的来说,就是通过接口回调,把业务分离出去.提高代码的可 ...
- Multiple Database Block Sizes and the Buffer Cache
In oracle 10g we can have multiple block sizes at the same time. When a tablespace is created we can ...