首页 > 其他分享 >组合数学

组合数学

时间:2023-05-09 11:56:12浏览次数:31  
标签:return 组合 ModZ 数学 operator const LL mod

自动取模型

template<int mod>
struct ModZ{
	LL x;
	ModZ(LL t = 0) {t %= mod; if (t < mod) t += mod; x = t;}
	
	ModZ power(ModZ a, LL b) {ModZ res = 1; for (; b; b >>= 1, a *= a) if (b & 1) res *= a; return res;}
	
	ModZ operator + (const ModZ& r) const {return ModZ(x + r.x);}
	ModZ operator - (const ModZ& r) const {return ModZ(x - r.x);}
	ModZ operator * (const ModZ& r) const {return ModZ(x * r.x);}
	ModZ operator / (const ModZ& r) const {return ModZ(x * power(r.x, mod - 2));}
	
	ModZ &operator += (const ModZ& r) const {return ModZ(x + r.x);}
	ModZ &operator -= (const ModZ& r) const {return ModZ(x - r.x);}
	ModZ &operator *= (const ModZ& r) const {return ModZ(x * r.x);}
	ModZ &operator /= (const ModZ& r) const {return ModZ(x / r.x);}
	
	friend istream &operator >> (istream &is, ModZ &a) {LL v; is >> v; a = ModZ(v); return is;}
	friend ostream &operator << (ostream &os, const ModZ& r) {os << r.x; return os;}
	
	friend bool operator == (ModZ lhs, ModZ rhs) {return lhs.x == rhs.x;}
	friend bool operator != (ModZ lhs, ModZ rhs) {return lhs.x != rhs.x;}
};
typedef ModZ<998244353> Z;

标签:return,组合,ModZ,数学,operator,const,LL,mod
From: https://www.cnblogs.com/Hamine/p/17384463.html

相关文章

  • CodeForces - 630F Selection of Personnel (组合数学)
    TimeLimit: 500MS MemoryLimit: 65536KB 64bitIOFormat: %I64d&%I64uCodeForces-630FSelectionofPersonnelSubmit StatusDescriptionOnecompanyofITCitydecidedtocreateagroupofinnovativedevelopmentsconsistingfrom 5 to 7 peopleandhir......
  • LightOJ - 1058 Parallelogram Counting (数学几何&技巧)给n个点求组成平行四边形个数
    LightOJ-1058ParallelogramCountingTimeLimit: 2000MSMemoryLimit: 32768KB64bitIOFormat: %lld&%lluSubmit StatusDescriptionThereare n distinctpointsintheplane,givenbytheirintegercoordinates.Findthenumberofparallelogramswhosever......
  • CodeForces - 621B Wet Shark and Bishops (数学几何&技巧)
    TimeLimit: 2000MS MemoryLimit: 262144KB 64bitIOFormat: %I64d&%I64uCodeForces-621BWetSharkandBishopsSubmit StatusDescriptionToday,WetSharkisgiven n bishopsona 1000 by 1000 grid.Bothrowsandcolumnsofthegridarenumberedfro......
  • 爱因斯坦的数学题
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){ intN,sum,i;/* while(scanf("%d",&N)!=EOF)*/ while(scanf("%d",&N)!=0) //输入N值,若N不是文件结束符则执行循环体 { sum=0; printf("在1-N中有:"); for(......
  • 排列组合的应用
    目录应用应用1:Leetcode.39题目分析代码实现方法一方法二应用2:Leetcode.40题目分析代码实现应用3:Leetcode.216题目分析代码实现方法一方法二应用4:Leetcode.78题目分析代码实现应用5:Leetcode.90题目分析代码实现应用6:Leetcode.77题目分析代码实现应用7:Leetcode.46题目分析代码实现应......
  • Typora 显示数学公式
    $\sum$```$\sum$```显示如下:不能正确显示数学公式解决方案文件->偏好设置->Markdown扩展语法->全部选中->关闭重新打开Typora关闭Typora重新打开......
  • 6.2.3-6.2.4 组合
    基础知识组合概念一般地,从\(n\)个不同元素中取出\(m(m≤n)\)个元素并成一组,叫做从\(n\)个不同元素中取出\(m\)个元素的一个组合.解释(1)组合的举例:从高二(1)班\(50\)个学生中选\(5\)个学生组个篮球队;从甲、乙、丙三名同学中选出两人参加一项活动.(2)排列与组合的区别排......
  • 离散数学第二部分内容总结
    前言:  高中对集合已经有过学习,像基本概念,一些基础的运算都有学习过,这部分的内容比较简单,重点要理清楚二元关系中的概念,容易弄混的地方要牢记。集合的基本概念:  1.集合的基本概念:   集合是“确定的一堆东西”,集合里的“东西”则称为元素。现代的集合一般被定义为:由一个......
  • 洛谷 P8367 - [LNOI2022] 盒(组合数学)
    设\(a\)数组的前缀和为\(s_i\),\(b\)数组的前缀和为\(t_i\),那么根据模拟费用流或者贪心的思想,每一条边经过的次数即为\(|s_i-t_i|\),因此非常trivial的做法是转换贡献体,枚举每种方案下每条边被经过的次数,然后乘以\(w_i\)求和,具体来说:\[ans=\sum\limits_{i=1}^{n-1}\sum\l......
  • 拉格朗日反演公式(lagrange inversion)组合证明
    Thereisasimplecombinatorialproof.Theoriginalformis\[[t^n]w^k=\frac{k}{n}[t^{n-k}]\phi^k\]where\(w=t\phi(w)\)consider\(w\)asegf.ofthewaysofsometrees.\(\phi\)asageneratingruleconcerningdegree.\[n![x^n]\frac{w^k}{k......