AtCoder

ABC271 A問題(484558)を解く

AtCoder_ABC271_A

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

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

A問題 484558(Difficulty : 28)

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

ABC271 A問題 484558

16進数を扱う問題です。AtCoder Problems による Difficulty は、28 でした。ABC A問題としては、標準的な難易度です。

なお、48 45 58 を16進数として文字コードに変換すると HEX となります。

解答案

問題を解く方針を書きだします。

  • 整数を読み込む
  • 16進数2桁として出力

問題文の趣旨から、16進数1桁の文字の配列 hex_char を定義しました。問題の16進数は、大きくても2桁の範囲となるため、2桁目(16で割った切り捨て)、1桁目(16で割った余り)を、計算して出力します。

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

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

char hex_char[16] = {'0', '1', '2', '3', '4', '5', '6', '7',
                     '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

int main()
{
	int n;
	cin >> n;

	cout << hex_char[n / 16] << hex_char[n % 16] << endl;

	return 0;
}

方針に従い、プログラムしました。

C++(C言語)では、printf で16進数2桁を出力できます。こちらの方が、簡単に書けます。

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

int main()
{
	int n;
	cin >> n;

	printf("%02X\n", n);

	return 0;
}

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

Python プログラム例(ABC271A)

f文字列によって16進数2桁を出力できます。

"""AtCoder Beginner Contest 271 A"""
n = int(input())
print(f"{n:02X}")

Python 版も「AC」と判定されました。

最後に

16進数について、理解する良い問題だと思います。

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

COMMENT

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

CAPTCHA