PKU 2924 Gauß in Elementary School

  • 数列の公式を当てはめるだけ
  • 正負で式が微妙に変わる点に注意する
  • 正負で分けずに解く方法もあったはず・・・
ll myabs(ll i) {
	return i >= 0 ? i : -i;
}

ll calc(ll i) {
	const ll sign = i / myabs(i);
	i = myabs(i);
	const ll value = (i * (i + 1)) / 2;
	return sign * value;
}

int main() {
	int N;
	cin >> N;
	for (int caseIndex = 1; caseIndex <= N; ++caseIndex) {
		ll n, m;
		cin >> n >> m;
		ll answer;
		if (n >= 0 && m >= 0) {
			answer = m * (m + 1) / 2 - n * (n - 1) / 2;
		} else if (n < 0 && m >= 0) {
			answer = m * (m + 1) / 2 - n * (n - 1) / 2;
		} else {
			answer = m * (m + 1) / 2 - n * (n - 1) / 2;
		}

		printf("Scenario #%d:\n%lld\n\n", caseIndex, answer);
	}
}