結果
| 問題 | No.40 多項式の割り算 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2025-09-05 02:41:46 | 
| 言語 | Standard ML (MLton 20210117) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 5 ms / 5,000 ms | 
| コード長 | 1,290 bytes | 
| コンパイル時間 | 4,407 ms | 
| コンパイル使用メモリ | 686,844 KB | 
| 実行使用メモリ | 7,716 KB | 
| 最終ジャッジ日時 | 2025-09-05 02:41:53 | 
| 合計ジャッジ時間 | 5,058 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 32 | 
ソースコード
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 [a] = [a]
          | findAnsAux [a1, a2] = [a1, a2]
          | 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
            
            
            
        