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