
数学板子
Dir1ct
Direct
展开
-
取模模板类
const int mod = 998244353;int norm(int x) { if (x < 0) { x += mod; } if (x >= mod) { x -= mod; } return x;}template<class T>T power(T aa, long long bb) { T res = 1; for (; bb; bb /= 2, aa *= aa).原创 2022-04-11 11:11:44 · 328 阅读 · 0 评论 -
Fibonacci 第 n 项 c++
题意:求Fibonacci数列的第n项,并对结果取模,即求 其中这里由于n的值很大,故我们不能使用递推的方法求得第n项,于是我们考虑更快的矩阵快速幂设表示一个的矩阵,我们希望依据推出。尝试推倒一个base矩阵,使,即于是我们便可以推倒出这样一个式子:定义那么则有这个矩阵的第一行第一列元素,也就是的第一行第一列元素。另外,当的时候可以直接输出1,不需要执行矩阵快速幂。AC代码如下:#include<bits/stdc++.h>#de...原创 2022-01-07 20:58:41 · 966 阅读 · 0 评论 -
矩阵加法,减法,乘法c++
代码如下struct matrix{ int a[maxn][maxn]; matrix() { memset(a,0,sizeof a); }//init matrix operator-(const matrix &T) const { matrix res; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) res.a[原创 2022-01-07 20:35:02 · 356 阅读 · 0 评论 -
取整求和c++(根号方法)
for(int i=1;i<=n;i++) ans+=n/i; 复杂度O(n)下面代码复杂度为O( sqrt(n) )long long getsum(long long nn){ long long ans=0; long long tmp,r,l; for(long long i=nn;i>=1;) { tmp=nn/i; r=i; l=nn/(tmp+1)+1; ans+=(r-l+原创 2021-12-04 19:03:12 · 1262 阅读 · 0 评论 -
取模快速幂c++
long long POW(long long a,long long b,long long p){ a%=p; ll res=1; while(b){ if(b&1) res=res*a%p; a=a*a%p; b=b>>1; } return res%p;}原创 2021-12-04 18:51:24 · 168 阅读 · 0 评论 -
素数筛板子(c++)
欧拉筛(时间复杂度)const int prime_max=10000010;int prime[prime_max],st[prime_max];void ola()//st[i]=0 is prime{ int ma=prime_max-1; int cnt=0; st[1]=1; for(int i=2;i<=ma;i++) { if(st[i]==0) prime[cnt++]=i; .原创 2021-12-01 19:08:06 · 619 阅读 · 0 评论 -
C++求组合数板子
最近写题已经遇到过两次要用组合数C(n,k)的题目了,为了方便下次用板子,写个博客记录一下方法一:在数据比较小的时候,可以用先乘后除的方法以下代码复杂度为O(n+k) 缺点是容易爆long long我们知道,C(n,m)=[ n*n-1*n-2* .... *(n-k) ] / [1*2*3* .... *k],下方代码便是long long C(long long nn, long long kk){ long long ansC = 1; for (int i =..原创 2021-10-29 21:21:55 · 525 阅读 · 0 评论