けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 271 A - 484558 (6Q, 灰色, 100 点)

16進法に関する問題!

問題概要

0 以上 255 以下の整数  N が与えられる。

 N の 16 進法表記を求めよ。

考えたこと

16 進法について知識がなかったら、たとえば次のような記事で勉強するとよさそう!

zenn.dev

 16^{2} = 256 であり、今回与えられる整数  N は 255 以下なので、「 N を16進法で表したら 2 桁以下」になる。つまり、16進法で表したときに、  16^{0} の位と、 16^{1} の位の値がわかればよい。


  •  16^{0} の位の値:これは N % 16 によって求められる。この値が 10, 11, ..., 15 であるときは A, B, ... F とすればよい
  •  16^{1} の位の値:これは N / 16 によって求められる。この値が 10, 11, ..., 15 であるときは A, B, ... F とすればよい

以上によって、求められる。

コード

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

// 16進法における桁の値を、文字に変換する
char conv(int a) {
    if (a < 10) return '0' + a;
    else return 'A' + (a - 10);
}

int main() {
    int N;
    cin >> N;
    cout << conv(N / 16) << conv(N % 16) << endl;
}