G
N
I
D
A
O
L

Modint 还没封装完

namespace Modint{
	template<const unsigned int mod>class modint{
		unsigned long long s;
		public:
		operator int(){return s;}
		modint (int x){s=x;}
		modint (){}
		void operator =(const modint& x){
			s=x.s;
			return ;
		}
		modint operator +(const modint& x)const{
			modint res;
			if(s+x.s>=mod){res.s=s+x.s-mod;}
			else{res.s=s+x.s;}
			return res;
		}
		 modint operator -(const modint& x)const{
			modint res;
			if(s<x.s){res.s=s+mod-x.s;}
			else{res.s=s-x.s;}
			return res;
		}
		 modint operator *(const modint& x)const{
			modint res;
			res.s=s*x.s%mod;
			return res;
		}
		 modint operator /(const modint& x)const{
			modint res;
			res.s=x.inv().s*s%mod;
			return res;
		}
		const modint pow(unsigned int y)const{
			modint res=1;
			modint x=s;
			while(y){
				if(y&1){
					res=res*x;
				}
				x=x*x;
				y=y>>1;
			}
			return res;
		} 
		modint inv() const{
			return pow(mod-2);
		}
	};
}

posted @ 2025-11-26 12:12  MagicalGirl_MH  阅读(9)  评论(0)    收藏  举报