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 ...
随机推荐
- 30个惊人的插件来扩展 Twitter Bootstrap
Bootstrap Maxlength It is a lightweight plugin that allows detecting the HTML maxlength property of ...
- 设置Linux时间 同步时间
date命令将日期设置为2014年6月18日 ---- date -s 06/18/14 将时间设置为14点20分50秒 ---- date -s 14:20:50 将时间设置为2014年6月 ...
- JQ 选择器大全
一.基本选择器 选择器 描 述 返回 示例 #id 根据给定id匹配一个元素 单个元素 $("#test") 选取id为test的元素 .class 根据给定类名匹配一个元素 集合 ...
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9401981 ADB server didn't ACK 这个问题会困恼很多的新手朋友, ...
- XE5 ANDROID通过webservice访问操作MSSQL数据库
上接XE5 ANDROID平台 调用 webservice 一.服务端 在ro里添加函数(在impl上添加阿东connection,adoquery,dataprovider) function TN ...
- openerp学习笔记 跟踪状态,记录日志,发送消息
跟踪状态基础数据: kl_qingjd/kl_qingjd_data.xml <?xml version="1.0"?><openerp> <d ...
- ERROR 1005 (HY000): Can't create table'matrix.system_log' (errno: 150)
CREATE TABLE `user` (`id` bigint(32) NOT NULL AUTO_INCREMENT ,`name` varchar(32) CHARACTER SET utf8 ...
- backbone collection add 事件回调参数
this.listenTo(this.collection, 'add', this.renderBook); renderBook: function (item) { var bookView = ...
- cdev成员结构体file_operations文件操作结构的分析
struct file_operations{ struct module *owner; // 指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化为THIS_MODULES loff_t ...
- 语音识别之梅尔频谱倒数MFCC(Mel Frequency Cepstrum Coefficient)
语音识别之梅尔频谱倒数MFCC(Mel Frequency Cepstrum Coefficient) 原理 梅尔频率倒谱系数:一定程度上模拟了人耳对语音的处理特点 预加重:在语音信号中,高频部分的能 ...