結果

問題 No.791 うし数列
コンテスト
ユーザー tanson
提出日時 2025-11-26 00:07:26
言語 Standard ML
(MLton 20210117)
結果
AC  
実行時間 1 ms / 2,000 ms
コード長 1,114 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,285 ms
コンパイル使用メモリ 688,504 KB
実行使用メモリ 7,852 KB
最終ジャッジ日時 2025-11-26 00:07:32
合計ジャッジ時間 4,340 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 15
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

fun readStr () =
    let
        fun scan reader stream = SOME (StringCvt.splitl (not o Char.isSpace) reader (StringCvt.skipWS reader stream))
    in
        valOf (TextIO.scanStream scan TextIO.stdIn)
    end


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


fun findAns n =
    let
        val exploded = String.explode n
        val first = List.hd exploded
        val threes = List.tl exploded

        exception NotThree
        fun findAnsAux nil = 0
          | findAnsAux (#"3" :: tl) =
            1 + findAnsAux tl
          | findAnsAux (_ :: _) =
            raise NotThree
    in
        if String.size n < 2 then ~1
        else
            (
              if first = #"1"
              then
                  (
                    (findAnsAux threes)
                    handle NotThree => ~1
                  )
              else
                  (
                    ~1
                  )
            )
    end


val () =
    let
        val n = readStr ()
        
        val ans = findAns n
    in
        print (intString ans ^ "\n")
    end
0