Time Limit: 2 sec / Memory Limit: 1024 MB
配点: 100 点
問題文
あなたは正整数 N が与えられます。
あなたは、 012345+-*/
を使って、50000 文字以下で、答えが N になる数式を作ってください。
6789%^()
が使えないことに注意してください。
ただし、数字を連結して、2桁以上の数として利用することは禁止します。
また、初めがマイナスであるような式や、マイナス記号を単項演算子として使う事も禁止します。
(禁止される例: 8-2*(4*2)
, 55+42
, -4+2*4
, 5*5+3*-2
,)
さらにジャッジの都合上、項の値が10^{800}以上になった場合も不正解とします。
ただし、式は* /
を先に計算します。
また、優先順位が同じときは左から計算します。
さらに、割り算は小数点以下は切り捨てます(sample3を見てください)。
制約
1 ≦ N ≦ 10^{150}
入力
N
出力
式を一行に出力してください。
【小課題】
小課題1 [5点] n<10000 を満たす。
小課題2 [10点] n<10^{18} を満たす。
小課題3 [特に上限はない] nは150桁の整数である。 ただし、nはその条件を満たす中で一様なランダムに生成されている。 ケースは10ケース存在し、あなたの得点はケースごとの最低である。 ただし、ケースごとの得点はあなたの生成した式の長さをLとすると、3777.4826/sqrt(L) である。
入力例 1
7
出力例 1
5+2
5+2
= 7 なので、正しいです。ほかにも、3+4
や、2*3+1
や、 3*5/2
なども正しいです。
入力例 2
19
出力例 2
5*5-2*3
入力例 3
24
出力例 3
5*5/4*4
この問題の場合、5*5/4
を先に計算して、小数点以下を切り捨てて6になってから、*4
をするので答えは24です。