素直に全ての和を計算して全探索するのは、時間制限からできません。

各桁ごとに、が現れる組み合わせを数えることを考えます。 一の位にが現れるのは、など、足してになる一の位同士の組み合わせです。(制約より、はあり得ないことに注意してください。) これは、一の位の数字ごとに入力を分類して数えておけば可能です。

しかしながら、この方法をそのまま十の位に適応することはできません。一の位からの繰上りがあるためです。そこで、次のように考えます。

ある2つの数の下2桁をと置いたとき、これらの和がであれば、十の位にが現れます。これを満たす相手方の個数は、 下2桁のみを取った配列を用意しておき、ソートしておけば二分探索で求めることができます。(累積和を使ってもできます)。再び、制約より の場合は考慮しなくてもよいことに注意してください。

同様の操作を全ての桁に施した後、自分自身との和に現れるの数を引き、全体をダブルカウントしていればで割ったものが答えです。