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

hamayanhamayan's blog

Delete 7 [yukicoder No.544]

https://yukicoder.me/problems/no/544

解法

https://yukicoder.me/submissions/188941

数を整数型ではなく、文字列型として取得しておく。
先頭から順にAとBに分割していくが、

  • '7'であればAに'1', Bに'6'を追加
  • それ以外であれば、Aに'0', Bにその数を追加

これでA+B=Nとなるように数を分割することができる。
後は、A,Bを出力すればいいだけだが、Aはleading-zeroの可能性があるので、Aの先頭の0を消す必要がある。
これは、stringをintに変換する関数を書いて自分は対応した。

string N;
//---------------------------------------------------------------------------------------------------
int parse(string &x) {
    int res = 0;
    fore(i, x) res = res * 10 + i - '0';
    return res;
}
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;
    int len = N.length();

    string A = "", B = "";
    rep(i, 0, len) {
        if (N[i] == '7') {
            A += "1";
            B += "6";
        } else {
            A += "0";
            B += N[i];
        }
    }

    printf("%d %d\n", parse(A), parse(B));
}