AtCoder

ABC357 A問題(Sanitize Hands)を解く

AtCoder_ABC357_A

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

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

A問題 Sanitize Hands(Difficulty : 19)

問題の詳細は、リンク先をご覧ください。

ABC357 A問題 Sanitize Hands

手の消毒回数の累積和を計算して判断します。AtCoder Problems による Difficulty は 19 でした。

解答案

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

手の数の累積和を求め、累積和が $M$ を超えたら、ループを抜けます。以下が、C++プログラムです。

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

int main()
{
	int n, m;
	cin >> n >> m;
	vector<int> h(n);
	for (int i = 0; i < n; ++i) {
		cin >> h[i];
	}

	int result = 0;
	int s = 0;
	for (int i = 0; i < n; ++i) {
		s += h[i];
		if (s > m) {
			break;
		}
		++result;
	}

	cout << result << endl;

	return 0;
}

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

Python プログラム例(ABC357A)

Python版も基本的な考え方は同じです。以下がプログラムです。

"""AtCoder Beginner Contest 357 A"""
n, m = map(int, input().split())
h = list(map(int, input().split()))

result = 0
s = 0
for i in range(n):
    s += h[i]
    if s > m:
        break
    result += 1

print(result)

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

最後に

今回のABC357から、生成AIの使用が禁止されました。私は、競技プログラミング自体を楽しんでいたので、コンテスト中に生成AIを使用していませんでした。

どれくらいの影響があるのかは分かりませんが、引き続き競技プログラミングを楽しむつもりです。

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

COMMENT

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

CAPTCHA