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

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

AtCoder ABC 326 B - 326-like Numbers (灰色, 200 点)

整数  n が 326-like 数かどうかを判定する処理が書ければ、この問題は解ける。

問題概要

整数  n が 326-like 数であるとは、3 桁の正の整数であって、百の位と十の位の積が一の位に等しいことをいう。

与えられた整数  N 以上の、最小の 326-like 数を求めよ。

制約

  •  100 \le N \le 919

解法

整数  n が 326-like 数かどうかを判定する方法を考えよう。まず各位の値を求める必要があるが、

  • 百の位:n / 100
  • 十の位:(n / 10) % 10
  • 一の位:n % 10

と求められる。これを用いて判定すればよい。

326-like 数の判定ができるならば、for 文を用いて  n = N, N+1, N+2, \dots に対して 326-like 数であるかどうかを判定し、最初に 326-like 数であるものを答えればよい。

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

bool is326like(int n) {
    int x = n / 100;
    int y = (n / 10) % 10;
    int z = n % 10;
    if (x * y == z) return true;
    else return false;
}

int main() {
    int N;
    cin >> N;
    for (int x = N; x <= 999; ++x) {
        if (is326like(x)) {
            cout << x << endl;
            return 0;
        }
    }
}