はまやんはまやんはまやん

hamayanhamayan's blog

Digit Holes [CSAcademy #70 A]

https://csacademy.com/contest/round-70/task/digit-holes/

数0,6,9は穴が1つ、数8は穴が2つあるとする。
[A,B]の数の中で穴の数が最大の数を答えよ。

解法

[A,B]の全ての数について穴の数を数える。
x=0の時に実装によっては間違ってカウントしてしまうので注意。

int A, B;
int hole[10] = { 1, 0, 0, 0, 0, 0, 1, 0, 2, 1 };
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> A >> B;

    int ans = A;
    int ma = -1;
    rep(x, A, B + 1) {
        int cnt = 0;
        int y = x;
        while (y) {
            cnt += hole[y % 10];
            y /= 10;
        }
        if(x == 0) cnt = 1;

        if (ma < cnt) {
            ma = cnt;
            ans = x;
        }
    }

    cout << ans << endl;
}