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则来自内部伪随机 ...
随机推荐
- Django(四):model
一.创建model django.db.models是django自带的创建数据库的ORM. 在models.py中以继承models.Model创建表后,需要在setttngs中确保添加了当前应用, ...
- elasticsearch 6.3 安装手记
系统环境 centos 7 elasticsearch 6.3 需要 JDK 8 版本,先安装 JDK 8. ES6.3 安装地址: https://www.elastic.co/guide/en/e ...
- Invoke 和 BeginInvoke 的区别
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dot ...
- 不使用JavaScript让IE浏览器支持HTML5元素——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2515 如果我们不做什 ...
- springJDBC 中JdbcTemplate 类方法使用
一,Dao IUserinfDao package com.dkt.dao; import java.util.List; import com.dkt.entity.Userinfo; public ...
- 第二十四天- 模块导入 import from xxx import xxx
# 模块:# 模块就是⼀个包含了python定义和声明的⽂件,⽂件名就是模块的名字加上.py后缀# 换句话说我们⽬前写的所有的py⽂件都可以看成是⼀个模块# 为何用模块:写大项目时,把相关的功能进⾏分 ...
- 纯小白入手 vue3.0 CLI - 1 - npm 安装与初始化
node 开发环境请先自行准备 npm install -g @vue/cli 安装完成之后命令行则存在 vue 命令 vue -V 查看本地 vue 版本 vue -h 输出帮助 vue creat ...
- HTML5 Boilerplate
time: 2016-10-20 20:00 HTML5 Boilerplate(H5BP)是一个由 Paul Irish(Google Chrome 开发人员.jQuery 项目成员.Moderni ...
- opencv3.2.0图像处理之均值滤波blur API函数
##.均值滤波:blur函数 ##函数原型 : ,-),int borderType=BORDER_DEFAULT) (参数详解同boxFilter函数) /**********新建Qt控制台程序** ...
- 全功能开发团队(FSD)