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 ...
随机推荐
- AJAX 跨域 :Access-Control-Allow-Origin
在一个项目上想用NodeJS,在前端的JS(http://localhost/xxx)中ajax访问后端RestAPI(http://localhost:3000/….)时(Chrome)报错: XM ...
- Laravel 5 基础(三)- 向视图传送数据(续)
我们不仅仅可以向视图传送一个数据,同样我们可以传送Array public function about() { return view('pages.about')->with([ 'firs ...
- django - transaction
def user_atomic(): User.objects.create(name='purk1', email='pwu1@maxprocessing.com') User.objects.cr ...
- C# 获得手机归属地功能
今天通过查资料了解到web的页面抓取功能,应用HttpWebRequest和HttpWebResponse功能,从http://www.showji.com网站中抓取归属地信息 应该说这个方法是从别的 ...
- Tools for Presention
ZoomIt v4.5 http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx 微软的教师演示工具 主要有放大,画图,倒计时的功能. ...
- 【转载】Powershell连接世纪互联Office365
$User = "admin@contoso.com" $PWord = ConvertTo-SecureString –String "password" – ...
- synchronized关键字使用剖析
synchronized关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C. D等)正在用这个方法,有的话要等正在使用synchroniz ...
- Eclipse常用功能
功能(Functions):内置运行java程序的插件(JDT:java develop tools)工作集(WorkSet)(Task list)计划任务管理器(Mylyn)系统配置(Prefere ...
- 典型的js页面
var myurl; var mydata; var postype = "POST"; var getype = "GET"; var jsontype = ...
- Luence简单实现1
初步认识Luence,简单按照官方文档做了个例子,大牛绕开,仅供小白路过参考.如有错误,欢迎指正批评. 建一个简单工程,并且加入这几个小奶瓶,如下图: 注:版本不同,可能对jdk的需求是不同的,这个需 ...