結果

問題 No.673 カブトムシ
ユーザー 6soukiti296soukiti29
提出日時 2018-04-14 00:16:54
言語 Nim
(2.0.2)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 961 bytes
コンパイル時間 823 ms
コンパイル使用メモリ 66,300 KB
最終ジャッジ日時 2024-06-30 05:55:30
合計ジャッジ時間 1,215 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
/home/judge/data/code/Main.nim(5, 33) Error: type mismatch: got 'seq[BiggestInt]' for 'map(split(readLine(stdin), {' ', '\t', '\v', '\r', '\n', '\f'}, -1),
    parseBiggestInt)' but expected 'tuple'

ソースコード

diff #

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