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

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

JOI 一次予選 2023 (第 1 回) B - ゾロ目 (8Q, 難易度 1)

数値を文字列型で受け取るのが楽だと思われる。

問題概要

2 桁の整数  N が与えられる。

 N がゾロ目であるかどうかを判定せよ。

解法 (1): N を文字列型で受け取る

最も楽だと思われる方法は、 N の値を文字列型で受け取ることだと思われる。たとえば、 N = 57 のとき、文字列型の値 "57" として受け取ることとなる。

そうすれば、文字列型変数の名前を N としたとき、

N[0] == N[1]

であるかどうかを判定すればよい。

コード

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

int main() {
    string N;
    cin >> N;
    if (N[0] == N[1]) cout << 1 << endl;
    else cout << 0 << endl;
}

 

解法 (2):2 桁の整数  N の一の位と十の位を求める

整数値を文字列型で受け取ることを思いつかなくても解ける。一般に 2 桁の整数  N に対して、

  • 一の位は、 N を 10 で割った余り
  • 十の位は、 N を 10 で割った商

として求められる。これらが等しいかどうかを判定すればよい。

コード

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

int main() {
    int N;
    cin >> N;
    if (N % 10 == N / 10) cout << 1 << endl;
    else cout << 0 << endl;
}