关于 C++ class
  • 板块学术版
  • 楼主JustForYourself
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/10/24 20:03
  • 上次更新2023/10/27 06:06:24
查看原帖
关于 C++ class
809531
JustForYourself楼主2022/10/24 20:03

我封装了一个 ModInt:

class ModInt {
	
	#define MOD 998244353 // SET MOD
	
private:
	int num; // data
	
public:
	// to ModInt
	ModInt(int init = 0) {
		num = init;
		num %= MOD;
	}
	// to integer
	operator int() const {
		return num;
	}
	// '+'
	ModInt operator + (const ModInt &rhs) {
		return ModInt((num + rhs) % MOD);
	}
	ModInt & operator += (const ModInt &rhs) {
		num = (num + rhs) % MOD;
		return *this;
	}
	// '-'
	ModInt operator - (const ModInt &rhs) {
		return ModInt((num - rhs) % MOD);
	}
	ModInt & operator -= (const ModInt &rhs) {
		num = (num - rhs) % MOD;
		return *this;
	}
	// '*'
	ModInt operator * (const ModInt &rhs) {
		return ModInt(((long long)num * rhs) % MOD);
	}
	ModInt & operator *= (const ModInt &rhs) {
		num = ((long long)num * rhs) % MOD;
		return *this;
	}
	// '/'
	ModInt operator / (const ModInt &rhs) {
		return ModInt((num / rhs) % MOD);
	}
	ModInt & operator /= (const ModInt &rhs) {
		num = (num / rhs) % MOD;
		return *this;
	}
};

但是如果我

ModInt x = 114514;
int y = 1910;
Modint y = x + y * y;

就会报错。有没有什么好的解决方案?

2022/10/24 20:03
加载中...