【bug01】error: no match for ‘operator=‘ (operand types are ‘std::vector<int>‘ and ‘int‘)|

检查[]和()是否弄混了

//创建100个vector数组 应该用vector数组给v赋值
vector<int> v[100];
//创建一个有100个int元素的vector数组
vector<int> v(100);

参考链接:https://stackoverflow.com/questions/44455669/no-match-for-operator-operand-type-are-stdvectorint-and-int

#include <iostream> #include <vector> #include <algorithm> using namespace std; const int N = 105; const long long MOD = 998244353; long long fpow(long long base, long long exp, long long mod) { long long res = 1; while (exp > 0) { if (exp & 1) res = res * base % mod; base = base * base % mod; exp >>= 1; } return res; } long long ginv(long long x) { return fpow(x, MOD - 2, MOD); } long long C[N][N]; void precompute_combinations() { for (int i = 0; i < N; ++i) { C[i][0] = C[i][i] = 1; for (int j = 1; j < i; ++j) { C[i][j] = (C[i-1][j] + C[i-1][j-1]) % MOD; } } } struct mint { long long v; mint(long long x = 0) : v((x % MOD + MOD) % MOD) {} mint operator+(const mint& o) const { return mint((v + o.v) % MOD); } mint operator-(const mint& o) const { return mint((v - o.v + MOD) % MOD); } mint operator*(const mint& o) const { return mint((v * o.v) % MOD); } mint operator/(const mint& o) const { return mint(v * ginv(o.v) % MOD); } mint& operator+=(const mint& o) { v = (v + o.v) % MOD; return *this; } mint& operator-=(const mint& o) { v = (v - o.v + MOD) % MOD; return *this; } mint& operator*=(const mint& o) { v = (v * o.v) % MOD; return *this; } mint& operator/=(const mint& o) { v = v * ginv(o.v) % MOD; return *this; } bool operator>(int x) const { return v > x; } }; int n; mint p, a[N][N], f[N]; void gauss(int n) { for (int i = 1; i <= n / 2; ++i) { swap(a[i], a[n - i + 1]); } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n / 2; ++j) { swap(a[i][j], a[i][n - j + 1]); } } int r = 1; for (int j = 1; j <= n; ++j) { int mx = r; for (int i = r; i <= r + 1 && i <= n; ++i) { if (a[i][j].v > 0) { mx = i; break; } } if (mx != r) { swap(a[mx], a[r]); } if (r < n && a[r][j].v != 0) { mint t = a[r + 1][j] / a[r][j]; for (int k = j; k <= n + 1; ++k) { a[r + 1][k] = a[r + 1][k] - t * a[r][k]; } } ++r; if (r >= n) break; } for (int j = n; j >= 1; --j) { f[n - j + 1] = a[j][n + 1] / a[j][j]; for (int i = 1; i < j; ++i) { a[i][n + 1] = a[i][n + 1] - a[i][j] * f[n - j + 1]; a[i][j] = mint(0); } } } void solve() { cin >> n; { long long x, y; cin >> x >> y; p = mint(x) * mint(ginv(y)); } if (n == 1) { cout << 1 << '\n'; return; } mint iv = mint(1) / mint(n); for (int i = 1; i <= n - 1; ++i) { for (int j = 1; j <= n + 1; ++j) { a[i][j] = mint(0); } } for (int i = 1; i <= n - 1; ++i) { a[i][i] = mint(-1); a[i][n] = mint(-1); for (int j = 0; j <= i; ++j) { mint coef = mint(C[i][j]) * fpow(p.v, j, MOD) % MOD * fpow((mint(1) - p).v, i - j, MOD) % MOD * iv; if (i - j + 1 != n) { a[i][i - j + 1] = a[i][i - j + 1] + coef * mint(n - (i - j)); } a[i][i - j] = a[i][i - j] + coef * mint(i - j); } } gauss(n - 1); cout << (f[1].v + 1) % MOD << '\n'; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); precompute_combinations(); int T = 1; while (T--) { solve(); } return 0; }bug:错误:no match for ‘operator%’ (operand types are ‘mintand ‘const long long int’) 122 | mint coef = mint(C[i][j]) * fpow(p.v, j, MOD) % MOD * | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~ | | | | mint const long long int
最新发布
10-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值