No.3245 Payment with 8-rep Currency
タグ : / 解いたユーザー数 31
作問者 :


問題文
$8$ ユキドル,$88$ ユキドル,$888$ ユキドル,$8888$ ユキドルの各貨幣を使って,貨幣の枚数に偏りのないようにちょうどの金額を払えますか?
yuki 国では,通貨単位として「ユキドル」が用いられています(以降「$x$ ユキドル」のことを,$x$ の前に "Y" をつけて "Y $x$"と表記します).貨幣は Y $8$,Y $88$,Y $888$,Y $8888$ の $4$ 種類です.
yuki 国に住んでいる Alice は,とある店で買い物をしたところ,会計金額が Y $N$ となりました.
Alice は,手元に Y $8$,Y $88$,Y $888$,Y $8888$ の各貨幣をそれぞれ $10^{100}$ 枚持っています.
お金の支払い方にこだわりのある Alice は,以下の条件を満たすように支払いをしたいです.
- ちょうどの金額を支払う.
- すなわち,Y $8$,Y $88$,Y $888$,Y $8888$ の各貨幣を支払った枚数を $A, B, C, D$ としたとき,$8A + 88B + 888C + 8888D = N$ を満たす.
- どの貨幣についても,支払った枚数は,支払いに用いた全体の枚数の半分未満である.
- すなわち,$A, B, C, D < \dfrac{S}{2}$(ただし $S = A + B + C + D$)を満たす.
以上の条件を満たす Y $N$ の支払い方が存在するかどうか判定し,存在する場合は $1$ つ求めてください.
$T$ 個のテストケースが与えられるので,それぞれについて答えてください.
制約
- 入力は全て整数
- $1 \leq T \leq 8.88 \times 10^4$
- $1 \leq N \leq 8.88 \times 10^{17}$
入力
入力は以下の形式で標準入力から与えられる.ここで,$\mathrm{case}_i$ は $i$ 番目のテストケースを表す.
$T$ $\mathrm{case}_1$ $\mathrm{case}_2$ $\vdots$ $\mathrm{case}_T$
各ケースは以下の形式で与えられる.
$N$
出力
$T$ 行出力せよ.$i$ 行目には,$i$ 番目のテストケースに対して,条件を満たす Y $N$ の支払い方が存在しない場合は $-1$ を,存在する場合は Y $8$,Y $88$,Y $888$,Y $8888$ の各貨幣を支払った枚数の組 $A, B, C, D$ を空白区切りでこの順に出力せよ.答えが複数ある場合,そのうちどれを出力しても正答とみなされる.
サンプル
サンプル1
入力
4 8 984 80574336 878787878787878787
出力
-1 1 1 1 0 888 8888 888 8888 -1
$1$ 個目のテストケースについて,$(A, B, C, D) = (1, 0, 0, 0)$ という支払い方は $1$ つ目の条件を満たす唯一の支払い方ですが,これは $2$ つ目の条件を満たしません.そのため,条件を満たす支払い方は存在しません.
$2$ 個目のテストケースについて,$(A, B, C, D) = (1, 1, 1, 0)$ という支払い方は,$888 \times 1 + 88 \times 1 + 8 \times 1 = 984$ を満たすために $1$ つ目の条件を満たしており,どの貨幣の使用枚数も全体の枚数である $3$ 枚の半分未満なので $2$ つ目の条件も満たします.したがって,この出力は正解となります.
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。