AtCoder

ABC349 A問題(Zero Sum Game)を解く

AtCoder_ABC349_A

AtCoder が提供しているABC(AtCoder Beginner Contest)349 のA問題をC++とPythonで解いてみました。ABC349は、2024年4月13日21:00に実施されました。

AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。

A問題 Zero Sum Game(Difficulty : 25)

問題はリンク先をご覧ください。

ABC349 A問題 Zero Sum Game

参加者の持ち点の総和がゼロになることを使います。AtCoder Problems による Difficulty は 25 でした。

解答案

問題のタイトルがゼロサムゲームとなっているように、参加者の持ち点の総和は、開始時から変わりません。つまりゼロとなります。

$$A_1 + A_2 + \cdots + A_N = 0$$

つまり、

$$A_N = -(A_1 + A_2 + \cdots + A_{N-1})$$

となります。

C++ プログラム例(ABC349A)

与えられた数列の和を求めて、マイナスをつけて出力しました。

以下が、C++プログラムとなります。

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n;
	cin >> n;
	int sum = 0;
	for (int i = 0; i < n - 1; ++i) {
		int a;
		cin >> a;
		sum += a;
	}

	cout << -sum << endl;

	return 0;
}

AC(Accepted=正しいプログラム)と判定されました。

Python プログラム例(ABC349A)

Python 版も基本的な考え方は同じです。以下となります。

"""AtCoder Beginner Contest 349 A"""
n = int(input())
a = list(map(int, input().split()))

print(-sum(a))

こちらも「AC」と判定されました。

最後に

不変量の考え方は、難易度が高い問題でも使われています。簡単な問題でも概念が分かるとうれしく感じます。

引き続き ABC の問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA