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 ...
随机推荐
- Web Worker 使用教程【转】
原文:http://www.ruanyifeng.com/blog/2018/07/web-worker.html 一.概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个 ...
- tx1 gpio
- Spring Boot 教程系列学习
Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTful API简单项目的快速搭建 Spring Boot基础教程3-配置文件详 ...
- WebSocket——SuperWebSocket实现服务端和客户端
WebSocket——SuperWebSocket实现服务端和客户端具体实现如下: 注:本作者是基于vs2019 enterprise版本,所有项目均为.Net Framwork4.7版本(因为Web ...
- Cannot start compilation: the output path is not specified for module "salesystem". Specify the output path in Configure Project.
错误是发生在从github上checkout自己的项目时.因为没有将配置文件一起上传,所以在运行java程序时有了这个报错: Cannot start compilation: the output ...
- Js 实现返回上一页
Js 实现返回上一页 <a href="javascript:history.go(-1)">返回上一页</a> <a href="java ...
- Mybatis自定义控制台打印sql的日志工具
调试mybatis源码时,想要更改日志的的实现工具,首先需要了解其原理. 源码包里有这部分的解释,翻译如下: Mybatis 的内置日志工厂提供日志功能,内置日志工厂将日志交给以下其中一种工具作代理: ...
- 微信小程序网络通信(一)
本文链接:https://blog.csdn.net/melovemingming/article/details/82831749微信小程序网络服务器网络配置支持request 普通网络请求.支持套 ...
- php递归注意事项
/* 循环去除字符串左边的0 */ function removeLeftZero($str){ if($str['0'] == '0'){ $str = substr($str, '1'); rem ...
- vs2017在前端页面使用F12无法转到js脚本函数定义
这样设置后就可以正常使用了