zoukankan      html  css  js  c++  java
  • wenbao与模板

     1 #define LL long long
     2 //快速幂 a^p%Mod
     3 LL pow_mod(LL a, LL p, LL Mod){
     4     LL X = 1LL;
     5     if(a == 0) return 0;
     6     while(p){
     7         if(p&1) X = X*a%Mod;
     8         a = a*a%Mod;
     9         p >>= 1;
    10     }
    11     return X;
    12 }
    13 //扩展欧几里得
    14 void gcd(LL a, LL b, LL& d, LL& x, LL& y){
    15     if(!b) { d = a, x = 1, y = 0;}
    16     else { gcd(b, a%b, d, y, x); y -= x*(a/b);}
    17 }
    18 //计算模n下a的逆
    19 //第一种利用GCD
    20 LL inv(LL a, LL n){
    21     LL d, x, y;
    22     gcd(a, n, d, x, y);
    23     return d == 1 ? (x+n)%n : -1;
    24 }
    25 //第二种利用欧拉定理
    26 //pow_mod(a, n-2, n)

     KMP

     1 const int maxn = 1e5+10;
     2 int Next[maxn];
     3 int KMP(char* aim, char* str){
     4     memset(Next, 0, sizeof(Next));
     5     int num = 0, len = strlen(aim), Len = strlen(str);
     6     for(int i = 1; i < len; i++){
     7         int j = Next[i];
     8         while(j && aim[i] != aim[j]) j = Next[j];
     9         Next[i+1] = (aim[i] == aim[j]) ? j+1 : 0;
    10     }
    11     int j = 0;
    12     for(int i = 0; i < Len; i++){
    13         while(j && aim[j] != str[i]) j = Next[j];
    14         if(aim[j] == str[i]) j++;
    15         if(j == len) num++;
    16     }
    17     return num;
    18 }

    欧拉筛

     1 const int maxn = 1e5+10;
     2 int p[maxn], phi[maxn];
     3 bool vis[maxn];
     4 int Euler(int n){
     5     int i, j, k;
     6     phi[1] = 1;
     7     for (int i = 2; i < n; ++i){
     8         if (!vis[i]){
     9             p[cnt++] = i;
    10             phi[i] = i - 1;
    11         }
    12         for (int j = 0; j < cnt && i * p[j] < n; ++j){
    13             vis[i * p[j]] = true;
    14             if (i % p[j]) phi[i * p[j]] = phi[i] * phi[p[j]];
    15             else {
    16                 phi[i * p[j]] = phi[i] * p[j];
    17                 break;
    18             }
    19         }
    20     }
    21     return cnt;
    22 }

    输入输出外挂

     1 int read(){
     2     int x=0,f=1,ch=getchar();
     3     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
     4     while(ch<='9'&&ch>='0'){x=(x<<1)+(x<<3)+ch-'0',ch=getchar();}
     5     return x*f;
     6 }
     7 void out(int x){
     8     if(x > 9) out(x/10);
     9     putchar(x%10+'0');
    10 }

    测试时间

     1 printf("%.3lf ", (double)clock()/CLOCKS_PER_SEC); 

     1 struct Node{
     2     ll x[16][16];
     3 };
     4 Node mul(Node xx, Node yy){
     5     Node X;
     6     for(int i = 0; i < d; ++i){
     7         for(int j = 0; j < d; ++j){
     8             X.x[i][j] = 0;
     9             for(int k = 0; k < d; ++k){
    10                 X.x[i][j] = (X.x[i][j] + (xx.x[i][k]*yy.x[k][j])%m) % m;
    11             }
    12         }
    13     }
    14     return X;
    15 }
    16 Node q_m(Node A, ll x){
    17     Node AAA;
    18     for(int i = 0; i < d; ++i){
    19         for(int j = 0; j < d; ++j){
    20             AAA.x[i][j] = (i == j);
    21             //printf("%lld ", AAA.x[i][j]);
    22         }
    23         //puts("");
    24     }
    25     while(x){
    26         if(x&1) AAA = mul(AAA, A);
    27         A = mul(A, A);
    28         x >>= 1;
    29     }
    30     return AAA;
    31 }

    只有不断学习才能进步!

  • 相关阅读:
    dynamic_cast
    struct 字节对齐详解
    CentOS修改系统的默认启动模式为命令号界面
    linux系统备份还原
    linux 缺少libxxx.a 静态链接库
    linux下SVN忽略文件/文件夹的方法
    取消svn add
    centos 中文乱码解决办法2
    安装rpm包时遇到error: Failed dependencies:错误
    Linux rpm 命令参数使用详解[介绍和应用]
  • 原文地址:https://www.cnblogs.com/wenbao/p/6439067.html
Copyright © 2011-2022 走看看