社区讨论

关于 C++ class

学术版参与者 5已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@lo7qhrox
此快照首次捕获于
2023/10/27 06:06
2 年前
此快照最后确认于
2023/10/27 06:06
2 年前
查看原帖
我封装了一个 ModInt:
CPP
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;
	}
};
但是如果我
CPP
ModInt x = 114514;
int y = 1910;
Modint y = x + y * y;
就会报错。有没有什么好的解决方案?

回复

11 条回复,欢迎继续交流。

正在加载回复...