結果

問題 No.3 ビットすごろく
ユーザー yuppe19 😺yuppe19 😺
提出日時 2015-05-02 19:29:43
言語 Nim
(2.0.2)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 521 bytes
コンパイル時間 657 ms
コンパイル使用メモリ 66,120 KB
最終ジャッジ日時 2024-04-27 02:07:33
合計ジャッジ時間 1,100 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
/home/judge/data/code/Main.nim(17, 17) Error: type mismatch
Expression: <100
  [1] 100: int literal(100)

Expected one of (first mismatch at [position]):
[1] proc `<`(x, y: bool): bool
[1] proc `<`(x, y: char): bool
[1] proc `<`(x, y: pointer): bool
[1] proc `<`(x, y: string): bool
[1] proc `<`[Enum: enum](x, y: Enum): bool
[1] proc `<`[T: tuple](x, y: T): bool
[1] proc `<`[T](x, y: ptr T): bool
[1] proc `<`[T](x, y: ref T): bool
[1] proc `<`[T](x, y: set[T]): bool
[2] proc `<`(x, y: float): bool
[2] proc `<`(x, y: float32): bool
[2] proc `<`(x, y: int): bool
[2] proc `<`(x, y: int16): bool
[2] proc `<`(x, y: int32): bool
[2] proc `<`(x, y: int64): bool
[2] proc `<`(x, y: int8): bool
[2] proc `<`(x, y: uint): bool
[2] proc `<`(x, y: uint16): bool
[2] proc `<`(x, y: uint32): bool
[2] proc `<`(x, y: uint64): bool
[2] proc `<`(x, y: uint8): bool

ソースコード

diff #

import strutils, sequtils

const inf = 19970430

var
  n:int = stdin.readLine.parseInt
  dp = newSeqWith(n+1, inf)
  bits = newSeq[int](n+1)

for i in 0.. n:
  var cp = i
  while cp > 0:
    if (cp and 1)==1: bits[i] += 1
    cp = cp shr 1

dp[1] = 1
for loop in 0.. <100: #(ΦωΦ)<100回ぐらいやればいいよね
  for i in 1.. n:
    if i+bits[i] <= n: dp[i+bits[i]] = min(dp[i+bits[i]], dp[i]+1)
    if i-bits[i] >= 1: dp[i-bits[i]] = min(dp[i-bits[i]], dp[i]+1)

var res = dp[n]
if res==inf: res = -1
echo res
0