結果

問題 No.3462 Buttons
コンテスト
ユーザー tomerun
提出日時 2026-02-28 15:00:15
言語 Crystal
(1.19.1)
コンパイル:
crystal build -Donline_judge -o a.out --release --no-debug _filename_
実行:
./a.out
結果
AC  
実行時間 566 ms / 2,000 ms
コード長 868 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 15,701 ms
コンパイル使用メモリ 338,640 KB
実行使用メモリ 7,844 KB
最終ジャッジ日時 2026-02-28 15:00:43
合計ジャッジ時間 26,169 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 15
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

MOD = 998244353i64
read_line.to_i.times do
  puts solve() % MOD
end

def solve
  a, b, k = read_line.split.map(&.to_i64)
  ans = 0i64
  if a == 0
    return 0
  elsif a < 0
    if b >= 0
      return 0
    end
    if k == 1
      return 0
    end
    if b == -1
      return -a * (k - 1)
    end
    if k % 2 == 0
      return -a * pow(b.abs, k - 1)
    else
      return -a * 2 * pow(b.abs, k - 2)
    end
  else
    if b == -1 || b == 0 || b == 1
      return a * k
    elsif b < 0
      if k % 2 == 0
        return a * 2 * pow(b.abs, k - 2)
      else
        return a * pow(b.abs, k - 1)
      end
    else
      return a * pow(b, k - 1)
    end
  end
end

def inv(v : Int64)
  pow(v, MOD - 2)
end

def pow(v : Int64, p)
  ret = 1i64
  while p > 0
    if (p & 1i64) != 0
      ret *= v
      ret %= MOD
    end
    v *= v
    v %= MOD
    p >>= 1
  end
  ret
end
0