結果

問題 No.40 多項式の割り算
ユーザー tanson
提出日時 2025-09-05 02:39:09
言語 Standard ML
(MLton 20210117)
結果
WA  
実行時間 -
コード長 1,281 bytes
コンパイル時間 8,494 ms
コンパイル使用メモリ 686,584 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2025-09-05 02:39:19
合計ジャッジ時間 5,108 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 31 WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #

fun readInt () =
    valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn)

fun intString n =
    if 0 <= n
    then Int.toString n
    else "-" ^ Int.toString (abs n)

fun findAns a_s =
    let
        fun findAnsAux [] = []
          | findAnsAux [_] = []
          | findAnsAux [_, _] = []
          | findAnsAux [a1, a2, a3] = [a1, a2, a3]
          | findAnsAux (a1 :: a2 :: a3 :: tl) = 
            findAnsAux (a2 :: (a3 - (~a1)) :: tl)

        fun dropZero [] = []
          | dropZero (h::tl) = 
            if h = 0 then dropZero tl
            else (h::tl)

        val tempAns = findAnsAux (List.rev a_s)
        val ans = List.rev (dropZero tempAns)
    in
        ans
    end

fun ansString [] = ""
  | ansString [e] = intString e
  | ansString (h::tl) = 
    (intString h) ^ " " ^ ansString tl
    

val () =
    let
        val d = readInt ()
        val a_s = List.tabulate (d + 1, fn _ => readInt ())

        val ans = findAns a_s
    in
        (
          if ans = []
          then
              (
                print "0\n";
                print "0\n"
              )
          else
              (
                print (Int.toString (List.length ans - 1) ^ "\n");
                print (ansString ans ^ "\n")
              )
        )
    end

0