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

hamayanhamayan's blog

Unnatural Conditions [AIM Tech Round 5 (rated, Div. 1 + Div. 2) B]

http://codeforces.com/contest/1028/problem/B

s(x) := xの各桁の総和とするとき、s(a)≧n, s(b)≧n, s(a+b)≦mを満たすa,bを求めよ。
a,bは2230桁以下にせよ。

考察過程

1. まずは一番作りづらそうな場合を考えてみる
2. m=1,n=1129が一番きつそうな感じがある
3. というかこれが作れれば全部それを答えにできる
4. 頑張って作ろう

解法

http://codeforces.com/contest/1028/submission/42274957

今回はm=1,n=1129の場合の解法が全ての入力において答えになる。
なので、それを考える。
m=1なので、10000...という数がa+bになる。
あとは、s(a)とs(b)がなるべく大きくなるようにするために、
例えば10000であれば10000 = 4445 + 5555と分けよう。
4445側がちょっと小さくなってしまうが、適当にやっても1129は超えてくれるので大丈夫。

void _main() {
    string a = "", b = "";
    rep(i, 0, 2229) a += "4"; a += "5";
    rep(i, 0, 2230) b += "5";
    cout << a << endl << b << endl;
}