好像卡常,第10个点一直TLE~

Code:

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
set<ll>S;
map<ll,int>pp;
map<ll,int>::iterator it;
int Array[20]={2,3,5,7,11,13,17,19};
ll mult(ll x,ll y,ll mod)
{
ll tmp=(long double)x/mod*y;
return ((ull)x*y-(ull)tmp*mod+(ull)mod)%mod;
}
ll qpow(ll base,ll k,ll mod)
{
ll tmp=1;
for(;k;k>>=1,base=mult(base,base,mod))
if(k&1) tmp=mult(tmp,base,mod);
return tmp;
}
int isprime(ll x)
{
if(x<=2) return 1;
int i,j,k;
ll cur,a,pre;
for(k=0,cur=x-1;cur%2==0;cur/=2) ++k;
for(i=0;i<8;++i)
{
if(x==Array[i]) return 1;
a=pre=qpow(Array[i],cur,x);
for(j=1;j<=k;++j)
{
a=mult(a,a,x);
if(a==1&&pre!=1&&pre!=x-1) return 0;
pre=a;
}
if(a!=1) return 0;
}
return 1;
}
ll F(ll x,ll c,ll mod)
{
return (mult(x,x,mod)+c)%mod;
}
ll pollard_rho(ll x)
{
int k,step;
ll s=0,t=0,c=rand()%(x-1)+1,val=1,d;
for(k=1;;k<<=1,s=t,val=1)
{
for(step=1;step<=k;++step)
{
t=F(t,c,x);
val=mult(val,abs(s-t),x);
if(step%127==0)
{
d=__gcd(val,x);
if(d>1) return d;
}
}
d=__gcd(val,x);
if(d>1) return d;
}
}
void solve(ll x)
{
if(isprime(x))
{
S.insert(x);
return;
}
ll p=x;
for(;p>=x;) p=pollard_rho(x);
for(;x%p==0;) x/=p;
solve(x),solve(p);
}
set<ll>::iterator l;
int main()
{
int i,j,n;
// setIO("input");
srand((unsigned)time(NULL));
scanf("%d",&n);
for(i=1;i<=n;++i)
{
ll a;
S.clear(),scanf("%lld",&a),solve(a);
for(l=S.begin();l!=S.end();l++)
{
if((*l)==1) continue;
for(;a%(*l)==0;)
{
a/=(*l), pp[(*l)]++;
}
}
}
ll re=1;
for(it=pp.begin();it!=pp.end();it++)
re=mult(re,(it->second+1),998244353);
printf("%I64d\n",re);
return 0;
}

  

CF1033D Divisors Pollard-rho的更多相关文章

  1. POJ 1811 Prime Test (Pollard rho 大整数分解)

    题意:给出一个N,若N为素数,输出Prime.若为合数,输出最小的素因子.思路:Pollard rho大整数分解,模板题 #include <iostream> #include < ...

  2. 整数(质因子)分解(Pollard rho大整数分解)

    整数分解,又称质因子分解.在数学中,整数分解问题是指:给出一个正整数,将其写成几个素数的乘积的形式. (每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数.) .试除法(适用于范 ...

  3. Pollard Rho因子分解算法

    有一类问题,要求我们将一个正整数x,分解为两个非平凡因子(平凡因子为1与x)的乘积x=ab. 显然我们需要先检测x是否为素数(如果是素数将无解),可以使用Miller-Rabin算法来进行测试. Po ...

  4. Pollard rho算法+Miller Rabin算法 BZOJ 3668 Rabin-Miller算法

    BZOJ 3667: Rabin-Miller算法 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 1044  Solved: 322[Submit][ ...

  5. 初学Pollard Rho算法

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

  6. 【Luogu】P4358密钥破解(Pollard Rho)

    题目链接 容易发现如果我们求出p和q这题就差不多快变成一个sb题了. 于是我们就用Pollard Rho算法进行大数分解. 至于这个算法的原理,emmm 其实也不是很清楚啦 #include<c ...

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

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

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

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

  9. BZOJ_3667_Rabin-Miller算法_Mille_Rabin+Pollard rho

    BZOJ_3667_Rabin-Miller算法_Mille_Rabin+Pollard rho Description Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一 ...

  10. 浅谈 Miller-Robbin 与 Pollard Rho

    前言 $Miller-Robbin$ 与 $Pollard Rho$ 虽然都是随机算法,不过用起来是真的爽. $Miller Rabin$ 算法是一种高效的质数判断方法.虽然是一种不确定的质数判断法, ...

随机推荐

  1. POJ - 3687 Labeling Balls (拓扑)

    (点击此处查看原题) 题意 此处有n盏灯,编号为1~n,每盏灯的亮度都是唯一的,且在1~n范围之间,现已知m对灯之间的关系:a b ,说明灯a的亮度比灯b小,求出每盏灯的亮度,要求字典序最小(编号小的 ...

  2. 流程控制之 for 循环

    目录 流程控制之for循环 for 循环条件语句 for 循环的嵌套 流程控制之for循环 for 循环条件语句 for i in range(3): print(i) # 0 # 1 # 2 for ...

  3. Replication-Manager

    MYSQL5.7下搭建Replication-Manager 环境说明 在主机1,主机2,主机3上安装MySQL服务端和客户端. 主机1 主机2 主机3 操作系统 CentOS7.4 CentOS7. ...

  4. Django:登录、注册、退出

    创建项目: 一.创建项目 django-admin startproject form_test 二.创建应用 1.cd form_test 2.sudo ./manage.py startapp f ...

  5. phpexcel 生成大于26列数据

    function excelExport2($fileName = '', $headArr = [], $data = [], $widths=[]) { ob_clean(); // $fileN ...

  6. nodejs和npm

    Node.js安装及环境配置之Windows篇:https://www.cnblogs.com/liuqiyun/p/8133904.html 淘宝NPM镜像:https://npm.taobao.o ...

  7. Sublime Text 3配置浏览默认路径为localhost

    1.在 Sublime Text 3 中,安装 SideBarEnhancements 侧边栏增强插件.(注意:安装插件之前需要安装包管理工具,参考这里) 2.SideBarEnhancements ...

  8. PHP扩展之 Imagick安装

    最近的PHP项目中,需要用到切图和缩图的效果,在本地windows开发环境,安装过程遇到好多问题,在此与大家分享. php官网里,一大群老外也看不懂这玩意怎么装,主要原因在于,php版本庞杂,还有x8 ...

  9. TVM设备添加以及代码生成

    因为要添加的设备是一种类似于GPU的加速卡,TVM中提供了对GPU编译器的各种支持,有openCl,OpenGL和CUDA等,这里我们选取比较熟悉的CUDA进行模仿生成.从总体上来看,TVM是一个多层 ...

  10. mysql8安装

    1.先卸载当前系统中已安装的mariadb rpm -qa | grep mariadb rpm -e --nodeps 文件名 2.安装mysql依赖包 yum install gcc gcc-c+ ...