Description

已知N,求phi(N)

Input

正整数N。N<=10^18

Output

输出phi(N)

Sample Input

8

Sample Output

4

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,欧拉函数)的更多相关文章

  1. BZOJ_4802_欧拉函数_MR+pollard rho+欧拉函数

    BZOJ_4802_欧拉函数_MR+pollard rho+欧拉函数 Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sa ...

  2. 积性函数&线性筛&欧拉函数&莫比乌斯函数&因数个数&约数个数和

    只会搬运YL巨巨的博客 积性函数 定义 积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数 ...

  3. python中multiprocessing.pool函数介绍_正在拉磨_新浪博客

    python中multiprocessing.pool函数介绍_正在拉磨_新浪博客     python中multiprocessing.pool函数介绍    (2010-06-10 03:46:5 ...

  4. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  5. 初学Pollard Rho算法

    前言 \(Pollard\ Rho\)是一个著名的大数质因数分解算法,它的实现基于一个神奇的算法:\(MillerRabin\)素数测试(关于\(MillerRabin\),可以参考这篇博客:初学Mi ...

  6. Miller-Rabin 素性测试 与 Pollard Rho 大整数分解

    \(\\\) Miller-Rabin 素性测试 考虑如何检验一个数字是否为素数. 经典的试除法复杂度 \(O(\sqrt N)\) 适用于询问 \(N\le 10^{16}\) 的时候. 如果我们要 ...

  7. 全网最easy的better-scroll实现上拉加载和下拉刷新

    前言 移动端页面常见的一种效果:下拉刷新(pulldownrefresh)和上拉加载(pullupload),目的都是为了增强用户的体验效果,因此各种移动端滑动插件也是层出不穷,今天小编也在这里给大家 ...

  8. 使用jquery结合ajax做下拉刷新页面,上拉加载页面,俗称分页

    jquery结合iscroll.js做下拉刷新页面,上拉加载页面 先上代码,里面都有注释这就不一一说明了 <!DOCTYPE html> <html lang="en&qu ...

  9. Pollard Rho 算法简介

    \(\text{update 2019.8.18}\) 由于本人将大部分精力花在了cnblogs上,而不是洛谷博客,评论区提出的一些问题直到今天才解决. 下面给出的Pollard Rho函数已给出散点 ...

  10. Pollard Rho算法浅谈

    Pollard Rho介绍 Pollard Rho算法是Pollard[1]在1975年[2]发明的一种将大整数因数分解的算法 其中Pollard来源于发明者Pollard的姓,Rho则来自内部伪随机 ...

随机推荐

  1. Func的介绍——c#封装的代理

    经常看到  Func<int, bool>...这样的写法,看到这样的就没有心思看下去了.我们学技术还是需要静下心来. 对Func<int,bool>的Func转到定义看它的解 ...

  2. C# 中的委托和事件 --转载

    作者:张子阳 转载源:  http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx C# 中的委托 ...

  3. SQL Server Profiler小技巧——筛选请求

    如果需要转载,请附上本文作者和原文链接:http://www.cnblogs.com/zeusro/p/4016228.html Microsoft SQL Server Profiler 是 SQL ...

  4. tcpcopy架构

    tcpCopy 1.0 的最新架构分为三个角色: Online Server(OS):上面要部署 TCPCopy,从数据链路层(pcap 接口)抓请求数据包,发包是从IP层发出去: Test Serv ...

  5. IDEA使用总结1-Github下载代码和上传代码到Git

    1. 首先你需要在IDEA中创建一个项目,创建完项目后使能版本管理插件 选择git后创建本地git仓库成功,提示如下 2.第二步 commit代码到 commit时会提示是否需要进行检查什么的 3.第 ...

  6. Android开发之旅1:环境搭建及HelloWorld

    ——工欲善其事必先利其器 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方 ...

  7. python中作用域

    Python 中,一个变量的作用域总是由在代码中被赋值的地方所决定的. 函数定义了本地作用域,而模块定义的是全局作用域.如果想要在函数内定义全局作用域,需要加上global修饰符. 变量名解析:LEG ...

  8. BZOJ4675: 点对游戏

    传送门 考虑每一对幸运点对的贡献,假设有 \(v\) 对 一共可以选择 \(x\) 个点,总共 \(n\) 个点 那么答案就是 \[v\times\frac{A_{n-2}^{x-2}x(x-1)}{ ...

  9. JavaScript对象遍历属性和值

    原文链接:http://caibaojian.com/javascript-object-3.html 加入你输出来一个对象,但是苦于不知道里面有哪些属性和值,这个时候,你可以通过下面的代码来遍历这个 ...

  10. thymeleaf 标签使用方法

    使用thymeleaf首先添加依赖,<dependency><groupId>org.springframework.boot</groupId><artif ...