O(1) gcd 板子
const int N = 2e5+10;
const int M = 500;
int cnt, p[N], _gcd[M][M];
int v[N][3],vis[N];
int gcd(int x, int y) {
int g = 1;
REP(i,0,2) {
int tmp;
if (v[x][i]>=M) {
if (y%v[x][i]==0) tmp = v[x][i];
else tmp = 1;
}
else tmp = _gcd[y%v[x][i]][v[x][i]];
y /= tmp, g *= tmp;
}
return g;
} void init() {
v[1][0] = v[1][1] = v[1][2] = 1;
REP(i,2,N-1) {
if (!vis[i]) p[++cnt]=i,v[i][0]=v[i][1]=1,v[i][2]=i;
for (int j=1; j<=cnt&&i*p[j]<N; ++j) {
vis[i*p[j]] = 1;
int *A = v[i*p[j]], *B = v[i];
A[0] = B[0]*p[j], A[1] = B[1], A[2] = B[2];
if (A[0]>A[1]) swap(A[0],A[1]);
if (A[1]>A[2]) swap(A[1],A[2]);
if (i%p[j]==0) break;
}
}
REP(i,1,M-1) {
_gcd[i][0] = _gcd[0][i] = i;
REP(j,1,i) _gcd[i][j]=_gcd[j][i]=_gcd[i%j][j];
}
}
O(1) gcd 板子的更多相关文章
- 【板子】gcd、exgcd、乘法逆元、快速幂、快速乘、筛素数、快速求逆元、组合数
1.gcd int gcd(int a,int b){ return b?gcd(b,a%b):a; } 2.扩展gcd )extend great common divisor ll exgcd(l ...
- BZOJ_2242_[SDOI2011]计算器_快速幂+扩展GCD+BSGS
BZOJ_2242_[SDOI2011]计算器_快速幂+扩展GCD+BSGS 题意: 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p, ...
- 个人整理的数组splay板子,指针的写的太丑了就不放了。。
splay的板子.. 由于被LCT榨干了..所以昨天去学了数组版的splay,现在整理一下板子.. 以BZOJ3224和3223为例题..暂时只有这些,序列的话等有时间把维修序列给弄上来!! BZOJ ...
- CodeForces - 1101D:GCD Counting (树分治)
You are given a tree consisting of n vertices. A number is written on each vertex; the number on ver ...
- bzoj3944: Sum 杜教筛板子题
板子题(卡常) 也可能是用map太慢了 /************************************************************** Problem: 3944 Us ...
- 从BZOJ2242看数论基础算法:快速幂,gcd,exgcd,BSGS
LINK 其实就是三个板子 1.快速幂 快速幂,通过把指数转化成二进制位来优化幂运算,基础知识 2.gcd和exgcd gcd就是所谓的辗转相除法,在这里用取模的形式体现出来 \(gcd(a,b)\) ...
- 详解扩展欧几里得算法(扩展GCD)
浅谈扩展欧几里得(扩展GCD)算法 本篇随笔讲解信息学奥林匹克竞赛中数论部分的扩展欧几里得算法.为了更好的阅读本篇随笔,读者最好拥有不低于初中二年级(这是经过慎重考虑所评定的等级)的数学素养.并且已经 ...
- CSP前的板子
板子A(扩展欧几里得) 题目描述 求关于x的同余方程 ax≡1(modb) 的最小正整数解. 输入格式 一行,包含两个正整数 a,b,用一个空格隔开. 输出格式 一个正整数 x,即最小正整数解.输入 ...
- 【洛谷】P2568 GCD
前言 耻辱,我这个OI界的耻辱! 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对.输入格式 一个整数N输出格式答案输入输出样例 输入 4 ...
随机推荐
- linux下/etc/profile、/etc/bashrc、~/.bashrc 和~/.bash_profile文件的区别
这个一定要理解登录式shell和非登录式shell的区别,前者是完全切换用户,后者是不完全,就算切换过来了,你pwd时家目录还是之前的家目录,所以 登录式顺序为:/etc/bashrc---/etc/ ...
- idea 启动web项目
1>Run>Edit Configurations... 2>Server>Open browser>URL>http://localhost:8888/demo2 ...
- MyBatis:MyBatis操作MySQL存储过程
一 . 数据库中创建存储过程,并查看创建结果 1.创建存储过程 DROP procedure IF EXISTS net_procedure_request; DELIMITER $$ )) BEGI ...
- 关于[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)] 的解释
关于[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)] 的解释 [StructLayout(LayoutKind.Sequentia ...
- linux安装Erlang
Erlang一种通用的面向并发的编程语言. 1.安装Erlang编译依赖: yum -y install gcc glibc-devel make ncurses-devel openssl-deve ...
- 【composer】 PHP composer 镜像地址更换
如果你使用的是 laravel-china.org 得 composer 镜像.那么近期执行更新时候就会报错: 莫慌,这是因为 laravel-china.org 已经停止了对composer得更新. ...
- Hadoop记录-HDFS均衡脚本
#!/bin/bash #作用:hdfs使用率取最大100个主机和最小80个主机进行数据均衡 #打印报告 hdfs dfsadmin -report>report.txt #截取主机名 cat ...
- String类型字符 常用的方法
例子: String r=“我是谁” System.out.println(r.length())
- 数据结构与抽象 Java语言描述 第4版 pdf (内含标签)
数据结构与抽象 Java语言描述 第4版 目录 前言引言组织数据序言设计类P.1封装P.2说明方法P.2.1注释P.2.2前置条件和后置条件P.2.3断言P.3Java接口P.3.1写一个接口P.3. ...
- python flask框架学习(二)——第一个flask程序
第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...