C++常用宏定义

#include<bits/stdc++.h>  
#include<algorithm>  
#include<iostream>
using namespace std; 
#define REP(i, n) for (int i=0;i<n;i++)  
#define REP_1(i, n) for (int i=1;i<=n;i++) 
#define REP_2(i, j, n, m) REP(i, n) REP(j, m)  
#define REP_3(i, j, k, n, m, l) REP(i, n) REP(j, m) REP(k, l) 

#define REP_S(it, str) for (char*it=str;*it;++it) 
#define ECH(it, A) for (__typeof(A.begin()) it=A.begin(); it != A.end(); ++it) 
/*
#define Display(A, n, m) {                      \  
    REP(i, n){                                  \  
        REP(j, m) cout << A[i][j] << " ";       \  
        cout << endl;                           \  
    }                                           \  
}  
#define Display_1(A, n, m) {                    \  
    REP_1(i, n){                                \  
        REP_1(j, m) cout << A[i][j] << " ";     \  
        cout << endl;                           \  
    }                                           \  
}
*/
typedef long long LL;  
typedef unsigned long long ULL; 
typedef double DB; 
typedef vector<int> VI;  
typedef vector<char> VC;  
typedef vector<string> VS;  
typedef vector<LL> VL;  
typedef vector<DB> VD;  
typedef set<int> SI;  
typedef set<string> SS;  
typedef set<LL> SL;  
typedef set<DB> SD;  
typedef map<int, int> MII;  
typedef map<string, int> MSI;  
typedef map<LL, int> MLI;  
typedef map<DB, int> MDI;  
typedef pair<int, int> PII;  
typedef pair<int, bool> PIB;  
typedef pair<LL, LL> PLL;  
typedef vector<PII> VII;  
typedef vector<VI> VVI;  
typedef vector<VII> VVII;  

const int INF = 0x3f3f3f3f;  //int无穷大值1061109567 
const LL INFF = 1LL << 60;   //long long无穷大值1152921504606846976
const DB EPS = 1e-9;  
const DB OO = 1e15;  
const DB PI = acos(-1.0); //M_PI;  

// 日常  
  
template<class T> inline T min(T a, T b, T c){return min(min(a, b), c);}  
template<class T> inline T max(T a, T b, T c){return max(max(a, b), c);}  
template<class T> inline T min(T a, T b, T c, T d){return min(min(a, b), min(c, d));}  
template<class T> inline T max(T a, T b, T c, T d){return max(max(a, b), max(c, d));}  
template<class T> inline T square(T a){return a*a;}  
template<class T> inline T cube(T a){return a*a*a;}

 
  
  
// 数论 
  
  
inline void INC(int &a, int b){a += b; if (a >= MOD) a -= MOD;}  
inline int sum(int a, int b){a += b; if (a >= MOD) a -= MOD; return a;}  
inline void DEC(int &a, int b){a -= b; if (a < 0) a += MOD;}  
inline int dff(int a, int b){a -= b; if (a < 0) a  += MOD; return a;}  
inline void MUL(int &a, int b){a = (LL)a * b % MOD;}  
inline int pdt(int a, int b){return (LL)a * b % MOD;}  
  
inline int sum(int a, int b, int c){return sum(sum(a, b), c);}  
inline int sum(int a, int b, int c, int d){return sum(sum(a, b), sum(c, d));}  
inline int pdt(int a, int b, int c){return pdt(pdt(a, b), c);}  
inline int pdt(int a, int b, int c, int d){return pdt(pdt(pdt(a, b), c), d);}  
  
inline int pow(int a, LL b){  
    int c(1); while (b){  
        if (b&1) MUL(c, a);  
        MUL(a, a), b >>= 1;  
    }  
    return c;  
}  
  
template<class T> inline T pow(T a, LL b){  
    T c(1); while (b){  
        if (b&1) c *= a;  
        a *= a, b >>= 1;  
    }  
    return c;  
}  
  
inline int _I(int b){  
    int a = MOD, x1 = 0, x2 = 1, q;  
    while (true){  
        q = a / b, a %= b;  
        if (!a) return (x2 + MOD) % MOD;  
        DEC(x1, pdt(q, x2));  
  
        q = b / a, b %= a;  
        if (!b) return (x1 + MOD) % MOD;  
        DEC(x2, pdt(q, x1));  
    }  
}  
  
inline void DIA(int &a, int b){MUL(a, _I(b));}  
inline int qtt(int a, int b){return pdt(a, _I(b));}  
  
  
inline int phi(int n){  
    int res = n; for (int i=2;sqr(i)<=n;++i) if (!(n%i)){  
        DEC(res, qtt(res, i));  
        do{n /= i;} while(!(n%i));  
    }  
    if (n != 1)  
        DEC(res, qtt(res, n));  
    return res;  
}  
template <class T>  
T GCD(T a, T b)  
{  
    return b ? GCD(b, a % b) : a;  
}  
template <class T>  
T extendGCD(T a, T b, T& x, T& y)  
{  
    if(!b) return x = 1, y = 0, a;  
    T res = extendGCD(b, a % b, x, y), tmp = x;  
    x = y, y = tmp - (a / b) * y;  
    return res;  
}  
template <class T>  
inline T inv(T w , T M){  
    if (M <= 0) return -1;  
    T x , y , d;  
    d = extendGCD(w , M , x , y);  
    if (d != 1) return -1;  
    x = ((x % M) + M) % M;  
    return x;  
}  


int main()
{  
	
	return 0; 
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Taylor_29511

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值