提交时间:2026-06-17 21:01:01
运行 ID: 91879
#include <iostream> using namespace std; int main() { // 优化IO ios::sync_with_stdio(false); cin.tie(NULL); long long n, k, T; if (!(cin >> n >> k >> T)) return 0; long long sum = 0; long long two_k = 2 * k; for (long long i = 0; i < T; ++i) { // 栋栋第 i+1 次报数,对应全局第 m 个数 // m = 1 + i * n long long m = 1 + i * n; // 计算 m * (m - 1) / 2 % k // 技巧:先算 m * (m - 1) % (2 * k),然后除以 2 long long m_mod = m % two_k; long long m_minus_1_mod = (m - 1) % two_k; // 乘积可能会达到 (2k),约 4*10,long long 足够 (最大约 9*10) long long product_mod = (m_mod * m_minus_1_mod) % two_k; long long val_half = product_mod / 2; long current_val = (1 + val_half) % k; sum += current_val; } cout << sum << endl; return 0; }