首页 > 其他分享 >modint 封装

modint 封装

时间:2025-01-08 21:33:00浏览次数:1  
标签:return int 封装 operator modint friend Mod

struct modint{
	int x;
	static int Mod;
	constexpr static void setmod(int _){Mod=_;}
	int qpow(int b,int p){
		if(!p) return 1;
		int d=qpow(b,p>>1);
		if(p&1) return 1ll*d*d%Mod*b%Mod;
		else return 1ll*d*d%Mod;
	}
	modint(int o=0){x=o;}
	modint &operator=(int o){return x=o,*this;}
	modint &operator+=(modint o){return x=x+o.x>=Mod?x+o.x-Mod:x+o.x,*this;}
	modint &operator-=(modint o){return x=(x>=o.x?x-o.x:x-o.x+Mod),*this;}
	modint &operator*=(modint o){return x=1ll*x*o.x%Mod,*this;}
	modint &operator^=(modint o){return x=qpow(x,o.x),*this;}
	modint &operator/=(modint o){return *this*=(o^=(Mod-2));}
	friend modint operator+(modint a,modint b){return a+=b;}
	friend modint operator-(modint a,modint b){return a-=b;}
	friend modint operator*(modint a,modint b){return a*=b;}
	friend modint operator/(modint a,modint b){return a/=b;}
	friend modint operator^(modint a,modint b){return a^=b;}
	friend bool operator==(modint a,modint b){return a.x==b.x;}
	friend bool operator!=(modint a,modint b){return a.x!=b.x;}
	bool operator<(const modint &b) const{return x<b.x;}
	bool operator>(const modint &b) const{return x>b.x;}
	bool operator<=(const modint &b) const{return x<b.x||x==b.x;}
	bool operator>=(const modint &b) const{return x>b.x||x==b.x;}
	bool operator!(){return !x;}
	modint operator-(){return x?Mod-x:0;};
	friend std::istream &operator>>(std::istream &is,modint &k) {
		int val;
		is>>val;
		k=val;
		return is;
	}
	friend std::ostream &operator<<(std::ostream &os,modint k){return os<<k.x;}
};
int modint::Mod=998244353;
//Remember to setmod()

标签:return,int,封装,operator,modint,friend,Mod
From: https://www.cnblogs.com/lemonniforever/p/18660642

相关文章

  • 理解JAVA封装.继承.多态
    JAVA面向对象的三大特征:封装,继承,多态。1.封装(1)封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现的细节,仅通过公开的接口和对象交互。封装使类成为一个具有内部属性的有隐藏功能的代码模块。通俗的理解就是将类内部的一些属性和方法隐藏起来,屏蔽细节。(2)JAVA中......
  • Java程序基础⑥Java类和对象+封装
    目录1.面向对象的概念2.类的定义和使用2.1类的概念2.2类的定义格式2.3类的实例化3.this引用3.1this引用的意义3.2this的特性4.构造方法4.1构造方法的概念4.2构造方法的性质4.3成员变量初始化4.4构造方法快速创建5.封装5.1封装的概念5.2 封装的......
  • std::fstream 封装加校验
    选自Cartographer_ROSproto_stream_interface.h//Awriterforwritingprotomessagestoapbstream.classProtoStreamWriterInterface{public:virtual~ProtoStreamWriterInterface(){}//Serializes,compressedandwritesthe'proto'tothef......
  • 模仿jiangly封装的线段树单点修改模板
    https://codeforces.com/contest/2057/problem/D#include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecond#defineintlonglong#defineendl'\n'constintN=1e6+10,mod=998244353,INF=1e16;typedefpair<int,int>PI......
  • Vue 封装的 过渡与动画 transition
    一、作用在插入、更新或移除DOM元素时在合适的时候给元素提那家样式类名二、写法1、准备好样式元素进入的样式:a、v-enter:进入起点b、v-enter-avctive:进入过程中c、v-enter-to:进入终点元素远离样式:a、v-leave:离开的起点b、v-leave-active:离开......
  • 博通带来业界首个3.5D F2F封装技术, 支持消费类AI客户开发下一代XPU
    博通(Broadcom)宣布,推出其3.5DeXtremeDimension系统级(XDSiP)封装平台技术。这是业界首个3.5DF2F封装技术,在单一封装中集成超过6000mm²的硅芯片和多达12个HBM内存堆栈,以满足AI芯片的高效率、低功耗的计算需求。 3.5DXDSiP是一种新颖的多维堆叠芯片平台,结合了2.5D技术和使......
  • 封装一个axios库并支持取消重复请求
    封装一个支持取消重复请求的axios库是一个常见的需求,尤其是在前端开发中。以下是一个简单的示例,展示了如何实现这一功能:安装axios如果你还没有安装axios,可以使用npm或yarn进行安装:npminstallaxios或yarnaddaxios封装axios创建一个新的文件,例如request.......
  • JavaScript的数据封装(Data Encapsulation)
    Python基础Python是一种高级编程语言,由GuidovanRossum于1991年首次发布。由于其简单易读的语法、强大的功能和丰富的库,Python已经成为当今最受欢迎的编程语言之一。无论您是初学者还是有经验的开发者,掌握Python都将为您的编程之路打开新的大门。在本文中,我们将探讨Python......
  • 如何封装一个小程序的网络请求库?请说说你的思路
    封装一个小程序的网络请求库可以帮助你统一处理网络请求,添加全局配置,以及简化代码。以下是一个基本的思路,指导你如何封装一个小程序的网络请求库:确定需求和功能:支持GET、POST等常见HTTP方法。能够设置全局请求头、超时时间等。提供错误处理和重试机制。返回Promise,支持asy......
  • Java 面向对象-封装
    何为封装(Encapsulation)面向对象的开发原则为“高内聚,低耦合”,即类的内部数据操作细节自己完成,不允许外部干涉,仅暴露少量方法给外部调用使用。例如,开车,我们无需懂得油门、离合、变速箱也可以驾驶。封装性本质是解耦(decouple)的表现在JAVA中,实现封装就是控制类或成员的可见范......