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)); }