题解
2024-07-25 14:31:24
发布于:广东
15阅读
0回复
0点赞
简单来说: 结构体
+ 数学计算
#include <iostream>
#include <algorithm>
using namespace std;
struct Cow {
int w, u;
};
Cow cows[3 * 500000 + 5];
long long ans = 0;
int main() {
int n, a, b, c, d, e, f, g, h, m;
cin >> n >> a >> b >> c >> d >> e >> f >> g >> h >> m;
long long i2, i3, i5;
for (long long i = 0; i < 3 * n; i++) {
i2 = (i * i) % d;
i3 = (i2 * i) % d;
i5 = ((i3 * i) % d * i) % d;
cows[i + 1].w = ((a * i5) % d + (b * i2) % d + c % d) % d;
i2 = (i * i) % h;
i3 = (i2 * i) % h;
i5 = ((i3 * i) % h * i) % h;
cows[i + 1].u = ((e * i5) % h + (f * i3) % h + g) % h;
}
sort(cows + 1, cows + 1 + 3 * n, [](Cow a, Cow b) {
return a.u == b.u ? a.w<b.w : a.u>b.u;
}); // 喜欢使用lambda捏.
for (int i = 1; i <= n; i++) {
ans += cows[i].w;
ans %= m;
}
cout << ans << endl;
return 0;
}
这段代码使用了c++新版的特性lambda, 编译时注意c++标准哦
这里空空如也
有帮助,赞一个