QAQ数论模板笔记√
#include <cstdio> using namespace std; long long gcd(long long a, long long b) { // (a, b)
return b ? gcd(b, a % b) : a;
} long long exGcd(long long a, long long b, long long &x, long long &y) { // ax + by = 1
if (b == ) {
x = , y = ;
return a;
}
long long d = exGcd(b, a % b, x, y);
long long t = x;
x = y;
y = t - a / b * y;
return d;
} bool calcInv(long long a, long long p, long long &inv) { // Inv_a % p
long long x, y;
long long d = exGcd(a, p, x, y);
if ( % d == ) return inv = (x % p + p) % p, ;
else return ;
} bool calcLinear(long long a, long long b, long long c, long long &x, long long &y) { // ax + by = c
long long _x = x, _y = y;
long long d = exGcd(a, b, _x, _y);
if (c % d) return ;
x = _x * c / d, y = _y * c / d;
return ;
} class CRT { // x = ai mod mi
public :
bool merge(long long a, long long m, long long b, long long n, long long &r, long long &p) {
long long g = gcd(m, n);
long long c = b - a;
if (c % g) return ;
c = (c % n + n) % n;
c /= g, m /= g, n /= g;
long long inv; calcInv(m, n, inv);
c *= inv, c %= n, c *= m * g, c += a;
p = m * n * g, r = (c % p + p) % p;
return ;
} long long calc(long long *a, long long *m, long long n) {
long long remain = a[], p = m[];
for (int i = ; i <= n; ++ i) {
long long _r, _p;
if (!merge(remain, p, a[i], m[i], _r, _p)) return -;
remain = _r, p = _p;
}
return (remain % p + p) % p;
}
} ; template <int SIZE> class calcPrimeNumbers { // calc the prime numbers below SIZE
public :
int isNotPrime[SIZE + ];
int primes[SIZE + ];
int primeCnt; void sieve(int lim) {
for (int i = ; i <= lim; ++ i) {
if (!isNotPrime[i]) primes[++ primeCnt] = i;
for (int j = ; j <= primeCnt && i * primes[j] <= lim; ++ j) {
isNotPrime[i * primes[j]] = ;
if (i % primes[j] == ) break ;
}
}
}
} ; long long mul(long long a, long long b, long long p) { // a * b % p;
long long ret = ;
for (int i = ; ~ i; -- i)
ret = (ret + ret) % p, b & (1ll << i) ? ret = (ret + a) % p : ;
return ret % p;
} long long quickPower(long long a, long long b, long long p) { // a ^ b % p
long long ret = ;
for ( ; b; b >>= , a = mul(a, a, p))
b % ? ret = mul(ret, a, p) : ;
return ret;
} template <int SIZE> class gaussian { // gaussian elimination
public :
double mat[SIZE + ][SIZE + ];
double ans[SIZE + ]; void gauss(int n) {
static int id[SIZE + ];
for (int i = ; i <= n; ++ i) id[i] = i;
for (int i = ; i <= n; ++ i) {
int now = i;
for ( ; now <= n; ++ now) {
if (mat[id[now]][i] != ) break ;
}
if (now == n + ) continue ;
swap(id[now], id[i]);
for (int j = i + ; j <= n; ++ j) {
int ii = id[i], ij = id[j];
double t = mat[ij][i] / mat[ii][i];
for (int k = n + ; k >= i; -- k) {
mat[ij][k] = mat[ii][k] * t - mat[ij][k];
}
}
}
for (int i = n; i; -- i) {
double count = mat[id[i]][n + ];
for (int j = n; j > i; -- j) {
count -= mat[id[i]][j] * ans[j];
}
ans[i] = count / mat[id[i]][i];
}
}
} ; template <int SIZE> class calcPhi { // calc the phi
public :
int isNotPrime[SIZE + ], primes[SIZE + ], primeCnt;
int phi[SIZE + ]; void sieve(int lim) {
phi[] = ;
for (int i = ; i <= lim; ++ i) {
if (!isNotPrime[i]) {
primes[++ primeCnt] = i;
phi[i] = i - ;
}
for (int j = ; j <= primeCnt && i * primes[j] <= lim; ++ j) {
isNotPrime[i * primes[j]] = ;
if (i % primes[j] == ) {
phi[i * primes[j]] = phi[i] * primes[j];
break ;
}
else {
phi[i * primes[j]] = phi[i] * (primes[j] - );
}
}
}
}
} ; int main() {
return ;
}
by yjl
%%%yjl
QAQ数论模板笔记√的更多相关文章
- QAQ高精度模板笔记√
#include <cmath> #include <cstdio> #include <cstring> #include <iostream> #i ...
- 五一DAY1数论学习笔记
by ruanxingzhi 整除性 如果a能把b除尽,也就是没有余数,则我们称a整除b,亦称b被a整除.(不是除以,是整除!!) 记作:\(a|b\) |这个竖杠就是整除符号 整除的性质 自反性 对 ...
- 数论学习笔记之解线性方程 a*x + b*y = gcd(a,b)
~>>_<<~ 咳咳!!!今天写此笔记,以防他日老年痴呆后不会解方程了!!! Begin ! ~1~, 首先呢,就看到了一个 gcd(a,b),这是什么鬼玩意呢?什么鬼玩意并不 ...
- c++模板笔记
使用vc2015进行C++ 模板的学习实验和笔记 用简单示例学习了解STL template大部头理论书 讲解各种规则和各种规则例外的解决办法 集中精力在20%的规则中的阴暗角落而不是80%实践中要注 ...
- Matrix Admin 后台模板笔记
一个后台模板用久了就想换一个.上次找到了Matrix Admin.和ACE一样都是Bootstrap风格,比较容易上手.Matrix要更健壮些.感觉拿去做用户界面也是可以的. 整体风格: 1.表单验证 ...
- 【Python】Flask系列-模板笔记
Jinja2模板 Jinja2模板传参 如何渲染模板: 模板放在templates文件夹下 从flask中导入render_template函数. 在视图函数中,使用render_template函数 ...
- NOIP考前复习-数制转换,数论模板与文件读写
数制转换有两种题型,一般一题,分值1.5分. 题型一:R进制转十进制 解法就是:按权展开,但要注意各个位的权,最低位(最右边)的权是0次方,权值为1. 纯整数的情况: (11010110)2 = 1× ...
- Thymeleaf模板笔记
1.常用标签: 使用thymeleaf模板,首要在html中引入: <html xmlns:th="http://www.thymeleaf.org"> 引入css.j ...
- d3基础图形模板笔记
散点图(scatter plot): http://bl.ocks.org/weiglemc/6185069 雷达图(radar): http://xgfe.github.io/uploads/che ...
随机推荐
- <a href="onclick="javascript:goSearch(this)" class="click" name="Java">Java</a>为什么a标签的父节点获取不到
<script> function goSearch(event) { //var select = $('#keyInput').val($(event).attr("name ...
- mysql中log
mysql的主从模式配置 1.改主库配置文件:D:\Program Files\MySQL\MySQL Server 5.5(my.ini/my.cnf)在下面加入 [mysqld] log=c:/a ...
- Linux下如何卸载HP_LoadGenerator
很简单的一句命令就可以完全卸载! rpm -e LoadGenerator
- 1101. Quick Sort (25)
There is a classical process named partition in the famous quick sort algorithm. In this process we ...
- Configure Log Shipping
准备工作 两台装有的Windows Server 2012R2以及SQL Server 2012的服务器 下载评估版 Windows Server 2012 R2 下载 Microsoft SQL S ...
- TIME_WAIT引起Cannot assign requested address报错
1. 问题描述 有时候用redis客户端(php或者java客户端)连接Redis服务器,报错:"Cannot assign requested address." 原因是客户端 ...
- mysqldump 参数说明
mysqldump参数说明 --all-databases , -A 导出全部数据库. mysqldump -uroot -p --all-databases --all-tablespaces , ...
- Oracle 10g下载链接
用迅雷下载: http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux_x86_64.cpio.gz http ...
- const 的全面总结
可以定义const常量 const int Max = 100; 2 便于进行类型检查 const常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类 ...
- C# 将cookiecontainer写到本地
public static void WriteCookiesToDisk(string file, CookieContainer cookieJar) { using(Stream stream ...