当前位置: 首页 > wzjs >正文

兰州做家教去哪个网站比较好wordpress微信机器人高级版 免费

兰州做家教去哪个网站比较好,wordpress微信机器人高级版 免费,网站建设宣传视频,有用vue做企业网站的目录 递推 杨辉三角快速幂逆元卢卡斯定理高精度 线性筛题目练习 递推 杨辉三角 可以将 C n m C_n^m Cnm​理解为从n个不同的数中选m个有几种选法。 方案数就是 C n m C_n^m Cnm​。 由于n,m的范围不大,可以利用递归 递归式: C n m C_n^m Cnm​…

目录

  • 递推 杨辉三角
  • 快速幂+逆元
  • 卢卡斯定理
  • 高精度 线性筛
  • 题目练习

递推 杨辉三角

在这里插入图片描述
可以将 C n m C_n^m Cnm理解为从n个不同的数中选m个有几种选法。
方案数就是 C n m C_n^m Cnm
由于n,m的范围不大,可以利用递归
递归式 C n m C_n^m Cnm= C n − 1 m C_{n-1}^m Cn1m+ C n − 1 m − 1 C_{n-1}^{m-1} Cn1m1
理解:
对第一个数有不选两种方式

  • 不选,从剩下的n-1个数中选m个 C n − 1 m C_{n-1}^m Cn1m
  • 选,从剩下的n-1个数中选m-1个 C n − 1 m − 1 C_{n-1}^{m-1} Cn1m1

特别的,选0次时应赋值为1,以便后面递推;
时间复杂度O(n*n)

void getC()
{for(int i=0;i<N;i++){for(int j=0;j<i;j++){if(j==0)c[i][j]=1;elsec[i][j]=c[i-1][j]+c[i-1][j-1];}}
}

在这里插入图片描述

通过列表发现,与杨辉三角的规律一致。

快速幂+逆元

在这里插入图片描述
当n,m的范围较大时,我们就不能用递归了,因为会TLE.
考虑用阶乘公式来计算:
在这里插入图片描述
阶乘的逆元怎么算?
在这里插入图片描述
为了能清楚的理解,还是建议大家自己推导推导~
在这里插入图片描述

时间复杂度O(nlogP)

void qmi(int a,int b)//快速幂
{int ans=1;while(b){if(b&1)ans=ans*a%P;a=a*a%P;b>>=1; }return ans;
}
void init()//打表 
{f[0]=g[0]=1;for(int i=1;i<N;i++){f[i]=f[i-1]*i%P;g[i]=g[i-1]*qmi(i,P-2)%P;} 
}
int getC()
{return f[n]*g[m]%P*g[n-m]%P;
}

卢卡斯定理

在这里插入图片描述
这个n和m的范围太大了,上面两个方法都不行,就要学习新的方法啦。
这个新的方法是让m/p和n/p的组合数与m%p和n%p的组合数相乘

在这里插入图片描述
时间复杂度O(plogp+logpn)
代码很简单,会用到上面的内容

void qmi(int a,int b)
{int ans=1;while(b){if(b&1)ans=ans*a%P;a=a*a%P;b>>=1; }return ans;
}
void init()//打表 
{f[0]=g[0]=1;for(int i=1;i<N;i++){f[i]=f[i-1]*i%P;g[i]=g[i-1]*qmi(i,P-2)%P;} 
}
int getC()
{return f[n]*g[m]*g[n-m]%p;
}
int lucas(int n,int m,int p)
{if(m==0)return 1;return lucas(n/p,m/p,p)*getC(n%p,m%p,p)%p;
}

高精度 线性筛

在这里插入图片描述

组合数的增长速度相当的快,必须用高精度来存。

  • 1.筛质数,把1~n之间的质数筛出来。
  • 2.枚举所有质数。
    在这里插入图片描述
    代码实现:
int get(int n,int p)//n的阶乘中p的个数 
{int s=0;while(n)s+=n/p,n/=p;return s;
}
int getC(int n,int m,int p)//C中P的个数 
{return get(n,p)-get(m,p)-get(n-m,p);
}
void mul(int c[],int p,int &len)//高精度 
{int t;for(int i=0;i<len;i++){t+=c[i]*p;c[i]=t%10;t/=10;} while(t){c[len++]=t%10;t/=10;}
}
int main()
{int c[N],len=1,c[0]=1;for(int i=0;i<cnt;i++){int p=prim[i];int s=getC(n,m,p);while(s--)mul(c,p,len);}
}

题目练习

题目来源:B3717 组合数问题

题目描述

给出 T T T 次询问,每次给出 n , m n,m n,m,请求出 ( n m ) \binom{n}{m} (mn) 998 , 244 , 353 998,244,353 998,244,353 取模的结果。

其中 ( n m ) \binom{n}{m} (mn) 为二项式系数,它的另一种写法是 C n m C_n^m Cnm

输入格式

输入的第一行是两个整数,分别表示询问的次数 T T T 和所给出 n n n 的最大值 N N N
接下来 T T T 行,每行两个整数,依次表示给出的 n n n m m m

输出格式

为了避免输出过大,请你输出一行一个整数,表示所有询问的结果的按位异或和

输入 #1

3 5
3 3
4 2
5 3

输出 #1

13

说明/提示

样例 1 解释

三组询问的答案依次是 1 , 6 , 10 1, 6, 10 1,6,10

数据规模与约定

100 % 100\% 100% 的数据,保证 1 ≤ T ≤ 5 × 1 0 6 1 \leq T \leq 5 \times 10^6 1T5×106 0 ≤ m ≤ n ≤ N ≤ 5 × 1 0 6 0 \leq m \leq n \leq N \leq 5 \times 10^6 0mnN5×106

提示

请注意大量的数据读入对程序效率造成的影响,选择合适的读入方式,避免超时。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 5e6+5;
int g[N], f[N], q[N];
const int p = 998244353;
void init(int n, int p) {g[1] = 1, f[0] = 1, q[0] = 1;for(int i = 2; i <= n; i++) g[i] =  (p - p / i) * g[p % i] % p; // 线性求逆元for(int i = 1; i <= n; i++) f[i] =  f[i - 1] * g[i] % p, q[i] =  q[i - 1] * i % p; // 线性求阶乘逆元
}
signed main() {ios::sync_with_stdio(0);int ans = 0, t, maxn;cin >> t >> maxn;init(maxn, p);while(t--) {int n, m; cin >> n >> m;int a =  q[n] * f[m] % p * f[n - m] % p;ans ^= a;}cout << ans << endl;return 0;
}

如有不足,后续补充~


文章转载自:

http://Bi5rIUr2.nfdty.cn
http://OXzUXOxa.nfdty.cn
http://wz06vSVV.nfdty.cn
http://zPQQXdjw.nfdty.cn
http://nfZW2Lc5.nfdty.cn
http://kw6isG4S.nfdty.cn
http://JyvHMban.nfdty.cn
http://scKc9gBh.nfdty.cn
http://X0A1mplI.nfdty.cn
http://6zijaown.nfdty.cn
http://avfAYPtC.nfdty.cn
http://oO1KoUBs.nfdty.cn
http://pL7Heacr.nfdty.cn
http://k5bHvc6F.nfdty.cn
http://PXAjqgGO.nfdty.cn
http://e6yODo7M.nfdty.cn
http://nWJLFScD.nfdty.cn
http://mAgOgoRk.nfdty.cn
http://nTfPd90L.nfdty.cn
http://XPFc4SP9.nfdty.cn
http://b97ESOnm.nfdty.cn
http://93b4TTaV.nfdty.cn
http://29YTYuIJ.nfdty.cn
http://RtSEL8HI.nfdty.cn
http://G31OC7nP.nfdty.cn
http://vgoeRJo3.nfdty.cn
http://FrdnmglT.nfdty.cn
http://yZBiD3T7.nfdty.cn
http://MYuTWK7P.nfdty.cn
http://IB8UUh0L.nfdty.cn
http://www.dtcms.com/wzjs/674962.html

相关文章:

  • 湖南 微网站开发与设计比赛做淘宝客怎么做官方网站
  • 深圳营销咨询公司灵宝seo公司
  • 重庆市建设工程安全管理网站五款wordpress常用加速插件
  • 天天向上做图网站wordpress设置cdn缓存
  • 一叶子电子商务网站建设策划书wordpress图片打水印
  • 怎么样备份网站数据库招聘网站开发需求
  • 章丘哪里做网站北京网站平台建设公司
  • 公司网站建设策划书重庆在线课程平台
  • 太平洋建设集团网站中国seo网站
  • 秦皇岛市建设局网站关于装配式专家网站 制作公司
  • 网站被收录 但搜索不到主页石家庄建设银行网点
  • 点餐系统网站建设外贸网站如何做免费推广
  • 展示型网站建设报价扶风网站建设
  • 网站开发项目实训代写简历哪个平台比较好
  • phton可以做网站吗牌具做网站
  • 营销类网站如何优化成都交投成高建设公司网站
  • 哪个行业对网站建设需求大学校网站建设报价是多少
  • 武进网站建设信息oa系统的功能和作用
  • 皮具网站建设在国外做电商网站
  • 高新区网站建设台海最新24小时消息
  • 陕西恒业建设集团网站袜子的网站建设方案
  • 手机网站 生成appcent7.4安装wordpress
  • 建设网站如何收费网页设计基础ppt
  • 遵义网站页设计制作东南亚cod建站工具
  • 建设企业网站个人网上站长资讯
  • 做设计的素材网站有哪些网站开发网站有哪些
  • 上海手机网站建设电话做代理的项目在哪个网站
  • zencart 网站迁移网站开发笔记
  • 诚信快捷小企业网站建设广州做网站的网络公司排名
  • 怎样建设VR网站软件定制开发多少钱