Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

A. Bad Ugly Numbers (Codeforces Global Round 7)

実戦では誤読してひどいことになってました・・・。

問題

https://codeforces.com/contest/1326/problem/A

問題概要

非負整数nが与えられる。以下の性質を持つ整数sを一つ示せ。

  • n桁
  • 非負整数
  • どの桁にも0を含まない
  • s自身のどの桁の数でもsを割り切れない

考察

これは発想一発の問題で、結論からいうとn == 1の場合を除いて、233...333というn桁の数値を作ればよいです。この数は奇数なので2で割り切れませんし、各桁の数の和は2 + 3 * (n - 1)となり、3で割ると2余る数なので3でも割り切れません。

なお、n == 1のときは、何を置いても自分自身で自分を割ることになるので題意を満たせません。よって-1です。まあサンプルにあるので問題ないですね。

#include <bits/stdc++.h>
using namespace std;
 
int main() {
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        if (n == 1) {
            cout << -1 << endl;
            continue;
        }
        cout << "2" << string(n - 1, '3') << endl;
    }
}

反省

最初、誤読していて、「nで割れない数」を作るんだと勘違いしていました。nが偶数のときは奇数を作ればいいんだけど、奇数の時どうすんだこれ?とか無駄な考察をして時間を無駄にしてしまいました。