zoukankan      html  css  js  c++  java
  • 数论

    数论

    第一节:快速乘法

    ll CF(ll a,ll b,ll p)

    {

    a%=p,b%=p;

    ll ans=0;

    do{

    if(a&1)

    (ans+=b)%=p;

    (b*=2)%=p;

    }while(a>>=1);

    return ans;

    }

    第二节:快速幂

    int Pow(int a,int b)

    {

    int ans=1;

    do{

    if(b&1)

    ans*=a;

    a*=a;

    }while(b>>=1);

    return ans;

    }

    第三节:线性筛素数

    for(i=2;i<m;i++)

        {

            if(!a[i]) prime[num_prime++]=i;

            for(j=0;j<num_prime && i*prime[j]<m;j++)

            {

               a[i*prime[j]]=1;合数标为1,同时,prime[j]是合数i*prime[j]的最小素因子

               if(!(i%prime[j]))  break;

    即比一个合数大的质数和该合数的乘积可用

    一个更大的合数和比其小的质数相乘得到

            }

    }

    第四节:排列组合

    可重排列:n^m

    不可重排列:n!/(n-m)!

    组合:n!/((n-m)!*m!)

    组合数线性递推:C(n,i)=C(n,i-1)*(n-i+1)/i;

    组合数求和:C(n,0)+C(n,1)+C(n,2)++C (n,n)=2^n

  • 相关阅读:
    Redis 发布/订阅模式
    Task
    并发入门
    ThreadPool线程池
    C# 5.0 CallerMemberName CallerFilePath CallerLineNumber获取调用方法名称,路径,行号
    信号量
    互斥体
    锁机制
    .net remoting(1)简单例子
    C#并行编程-并发集合
  • 原文地址:https://www.cnblogs.com/SeanOcean/p/10975724.html
Copyright © 2011-2022 走看看