SIMMATH - Đơn giản là toán
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
0.5s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift
Cho 3 số ~A, B, C~ hãy tính tổng sau:
$$\sum_{i=1}^{A} \sum_{j=1}^{B} \sum_{k=1}^{C} ijk$$
Kết quả thu được chia lấy phần dư cho ~998244353~ .
Bạn phải trả lời ~T~ test case có trong bài.
Input
- Dòng thứ nhất gồm 1 số nguyên ~T~
- ~T~ dòng tiếp theo, mỗi dòng chứa 3 số ~A, B, C~.
Biết rằng
- ~1 \leq T \leq 10^5~
- ~1 \leq A, B, C \leq 10^9~
Output
- Gồm ~T~ dòng, mỗi dòng chưa 1 số nguyên là kết quả của phép tính trên sau khi chia lấy phần dư cho ~998244353~.
Sample
Input #1
2
1 2 3
1000000000 987654321 123456789
Output #1
18
951633476
Bình luận
còn ai giờ còn làm code trên đây nx ko
include <bits/stdc++.h>
using namespace std; using int64 = long long;
const int64 MOD = 998244353;
int64 sum1toN(int64 N) { // (N(N+1)/2) mod MOD // Vì có thể N(N+1) vượt quá 64‑bit nếu N ~1e9? Thực ra 1e9*1e9 ~1e18 vừa trong int64. // Nhưng để an toàn mod trước. int64 res = N % MOD; int64 res2 = (N + 1) % MOD; int64 prod = (res * res2) % MOD; // chia cho 2 → nhân với inv2 mod MOD // Mod MOD là số tố, có thể tìm inv2 = (MOD+1)/2 nếu MOD lẻ. const int64 INV2 = (MOD + 1) / 2; return (prod * INV2) % MOD; }
int main(){ *ios::sync_with_stdio(false); cin.tie(NULL);*
}
Bạn giải thích được không
mod nhiều lần sẽ tránh được lỗi tràn số.
Tổng xich-ma trên thực tế = (1 + 2 + ... A) * (1 + 2 + ... + B) * (1 + 2 + ... + C)
Sử dụng công thức tính nhanh 1 + 2 + ... + n = (n + 1) * n / 2 sẽ ra kết quả
Chú ý chia dư để ra kết quả chính xác
thì không tự đi nghiên cứu đi=)))
//xoá comment
ai có ý tưởng không ạ.mình toàn bị TLE