Kane's blog

By Kane, 10 years ago, In Russian

Решаю задачу Сумма квадратов с e-olimp. Что не так в этом куске кода? Подозреваю что ошибка во взятии по модулю.

cin >> n >> m;

if (n < 0 && m < 0) {

n = abs(n);

  m = abs(m);

}

if (n > m) swap(n, m);

long long sum1 = 0, sum2 = 0, gr, GR;

gr = abs(n);

if (n > 0)

--gr;

sum1 = ((MOD + (gr * (gr + 1) * (2 * gr + 1) / 6) % MOD) % MOD);

GR = abs(m);

sum2 = ((MOD + (GR * (GR + 1) * (2 * GR + 1) / 6) % MOD) % MOD);

ll ans;

if (n > 0)

ans = (MOD + (sum2 - sum1) % MOD) % MOD;

else

ans = (MOD + (sum2 + sum1) % MOD) % MOD;

assert(ans >= 0);

cout << ans;

cout << '\n';

UPD: Прошу прощения за кривую разметку

  • Vote: I like it
  • -16
  • Vote: I do not like it