【模板】一坨数学算法

求GCD

1 int gcd(int a,int b){return !b ? a : gcd(b,a%b);}

线性筛求[1,n]的质数

 1 bool isprime[1000];
 2 int prime[100],tot;
 3 void pri(int n)
 4 {
 5     tot = 0;
 6     memset(isprime,true,sizeof(isprime));
 7     int i,j;
 8     for(i=2;i<=n;i++)
 9     {
10         if(isprime[i]) prime[++tot] = i;
11         for(j=1;j<=tot&&i*prime[j]<=n;j++)
12         {
13             isprime[i*prime[j]] = false;
14             if(i%prime[j]==0) break;
15         }
16     }
17 }

扩展欧几里得算法

 1 int exgcd(int a,int b,int &x,int &y)
 2 {
 3     if(!b)
 4     {
 5         x = 1,y = 0;
 6         return a;
 7     }
 8     int ret = exgcd(b,a%b,x,y);
 9     int t = x;
10     x = y;
11     y = t - a/b * y;
12     return ret;
13 }

时间: 2024-08-02 15:56:19

【模板】一坨数学算法的相关文章

hdu 2586 LCA模板题(离线算法)

http://acm.hdu.edu.cn/showproblem.php?pid=2586 Problem Description There are n houses in the village and some bidirectional roads connecting them. Every day peole always like to ask like this "How far is it if I want to go from house A to house B&quo

【C/C++学院】0825-类模板/final_override/类模板与普通类的派生类模板虚函数抽象模板类/类模板友元/位运算算法以及类声明/Rtti 实时类型检测/高级new创建/类以及函数包装器

类模板 类模板多个类型默认类型简单数组模板 #pragma once template <class T=int>//类模板可以有一个默认的值 class myArray { public: myArray(); ~myArray(); }; #include "myArray.h" template <class T=int>//每一个函数都需要加上一个默认的值 myArray<T>::myArray() //类模板成员函数在外部,需要加载类型初始

STL模板类--数据结构与算法

STL提供了一些模板类,实现了<数据结构>中的一些数据结构类型 在写代码时用到栈,队列等数据结构时可以充分利用STL模板类,会发现特别好用. 想起C语言中用数组实现栈和队列,简直就是噩梦. C++是世界上最好的语言...(just kidding !!!) 顺序容器:动态数组vector;deque链表list; 关联容器:set/multiset有序值:map/multimap有序键值对 一. 动态数组vector类 1.定义:#include<vector>  std::vec

数学算法那些事

1. 三种方法求最大公约数 1.连续整数检测法. 此算法比较简单: [php] view plain copy print? /** * greatest common divisor * * @param int $a * @param int $b */ function gcd($a, $b){ $t = $a> $b ?$b :$a; while ($t>0){ if($a%$t==0 && $b%$t ==0) break; --$t; } return $t; }

模板C++ 03图论算法 1最短路之单源最短路(SPFA)

3.1最短路之单源最短路(SPFA) 松弛:常听人说松弛,一直不懂,后来明白其实就是更新某点到源点最短距离. 邻接表:表示与一个点联通的所有路. 如果从一个点沿着某条路径出发,又回到了自己,而且所经过的边上的权和小于0, 就说这条路是一个负权回路. 回归正题,SPFA是bellman-ford的一种改进算法,由1994年西安交通大学段凡丁提出.它无法处理带有负环的图,判断方法:如果某个点进入队列的次数超过N次则存在负环. SPFA的两种写法,bfs和dfs,bfs判别负环不稳定,相当于限深度搜索

Part10 泛型程序设计与C++标准模板库 10.7算法

STL算法本身是一种函数模版 通过迭代器获得输入数据 通过函数对象对数据进行处理 通过迭代器将结果输出STL算法是通用的,独立于具体的数据类型.容器类型 STL算法分类 不可变序列算法 可变序列算法 排序和搜索算法 数值算法 不可变序列算法 不直接修改所操作的容器内容的算法 用于查找指定元素.比较两个序列是否相等.对元素进行计数等例: template<class InputIterator, class UnaryPredicate> InputIterator find_if(InputI

luogu5282 【模板】快速阶乘算法

由于巨佬 shadowice1984 卡时限,本代码已经 T 请不要粘上去交 退役之后再写一个常数小的多项式取模吧 一句话题意:NP问题,求N!%P 吐槽:出题人太毒瘤...必须写任意模数NTT,而且加法取模还溢出... 我常数太大,粘的好久以前写的多项式取模,卡了卡常才A,大家1e3 1e4不要写vector,不要参考下面的代码 orz shadowice1984 写 \(O(\sqrt n\log n)\) 吊打我的 \(O(\sqrt n\log^2 n)\) 以下是 \(O(\sqrt

(模板)扩展kmp算法(luoguP5410)

题目链接:https://www.luogu.org/problem/P5410 题意:有两个字符串a,b,要求输出b与a的每一个后缀的最长公共前缀.输出: 第一行有lenb个数,为b的next数组(特别地,next1为lenb) 第二行有lena个数,即答案. 思路:扩展kmp模板,涉及字典树,后续再补,先放模板. AC code: #include<bits/stdc++.h> #define N 1000010 using namespace std; int q,nxt[N],exte

【模板】高精算法

利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件的限制,往往达不到实际问题所要求的精度.我们可以利用程序设计的方法去实现这样的高精度计算.介绍常用的几种高精度计算的方法. 高精度计算中需要处理好以下几个问题: 1)数据的接收方法和存贮方法 数据的接收和存贮:当输入的数很长时,可采用字符串方式输入,这样可输入数字很长的数,利用字符串函数和操作运算,将每一位数取出,存入数组中.另一种方法是直接用循环