結果

問題 No.673 カブトムシ
コンテスト
ユーザー 6soukiti29
提出日時 2018-04-14 00:16:54
言語 Nim
(2.2.6)
コンパイル:
nim --nimcache=~ --hints:off -o:a.out -d:release cpp _filename_
実行:
./a.out
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 961 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 699 ms
コンパイル使用メモリ 67,400 KB
最終ジャッジ日時 2026-03-20 01:15:00
合計ジャッジ時間 996 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_1
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
/home/judge/data/code/Main.nim(5, 37) Error: tuple expected for tuple unpacking, but got 'seq[BiggestInt]'

ソースコード

diff #
raw source code

import sequtils,strutils,math
var
    B,C,D,ans,p : int64
    M : int64 = 1_000_000_007
(B, C, D) = stdin.readline.split.map(parseBiggestInt)

if C == 1:
    echo(((B mod M) * (D mod M)) mod M)
    quit()
proc powInt(n : int64, m : int64, k = 1_000_000_007):int64 =
    if m == 0:
        return 1
    elif m == 1:
        return (n mod k)
    var n2 = n mod k
    if (m mod 2) == 0:
        return powInt((n2 * n2) mod k,m div 2, k) mod k
    else:
        return (powInt((n2 * n2) mod k,m div 2, k) * n2) mod k


proc inv_mod(a : int64):int64 = 
    var
        b,x,u,q,t : int64
        a2 = a
    b = M
    x = 1
    u = 0
    while b > 0:
        q = a2 div b
        t = u
        u = x - q * u
        x = t
        t = b
        b = a2 - q * b
        a2 = t
    if x < 0:
        x += M
    return x
ans = B mod M
ans = (ans * (C mod M)) mod M
p = powInt(C, D) - 1
if p < 0:
    p += M
ans = (ans * p) mod M
ans = (ans * inv_mod(C - 1)) mod M
echo ans
0