コンビネーション:1656年を通じて、
1656:コンビネーション
制限時間:1000ミリ秒のメモリ制限:524288キロバイト
の提出:数によって89:49
説明[タイトル]
BZOJ 2982:オリジナルタイトルから
LMZは持っているn個
異なる選択する友人のグループ、彼毎晩メートルの [カニ]についてaは、だけでなく、毎晩同じではないの選択が必要です。それでは、どのように多くのそのような夜LMZはそれを続けることができますか?もちろん、LMZ年10007日、彼は答えを知りたいと思ったMOD 10007
値。
[Enter]を
最初の行の整数T
、発現トン
データのセット。
次トン
二行の各整数N- 、M
このような質問の意味として。
[出力]
トン
行、行あたり、である(N- M )MOD 10007
回答。
[サンプル入力]
4 5 1 5 2 7 3 4 2
[サンプル出力]
5 10 35 6
[注]
データ範囲とヒント:
すべてのデータのために、1 ≤ T ≤ 200は、1 ≤ M ≤ N- ≤ 2 × 10 8
。
この質問は、それ自体が神♂奇数タイトルである金以外の何ものでもありません
#include <ビット/ STDC ++ H> の#defineは長い長いllの 使用 名前空間STDを、 constの LL MOD = 10007 ; インラインint型リード() { int型のx = 0、F = 1 。 チャー CH = GETCHAR()。 一方、(CH < ' 0 ' || CH> ' 9 '){ 場合(CH == ' - ')、F = - 1 ; CH = GETCHAR();} 一方(CH> = ' 0 ' && CH <= '9 '){X = X * 10 + CH- ' 0 ' ; CH = GETCHAR();} 戻りのx *のF。 } (LLのB LL)インラインLLパワー { LL RES = 1 。 一方、(b)は、 { もし、(B&1)RES =のRES *%のMOD。= A *%モッズ; B >> = 1 。 } 戻りRESと、 } インラインのLL C(LL N、LLのM) { LL N0 = 1、M0 = 1 。 用(LL I = N-M + 1 ; iが<= N; I ++)はN0 = N0 * I%MOD。 用(LL I = 1 ; I <= M; iは++)M0 = M0 * I%MOD。 戻り N0 *パワーを(M0、mod- 2)%MOD。 } インラインLLルーカス(LL N、LLのM) { 場合(M == 0)リターン 1 。 戻り C(N%のMOD、m個%のMOD)*ルーカス(N / MOD、M / MOD)%MOD。 } int型のmain() { int型のT。 T = 読み取ります(); LL N、M。 一方、(t-- ) { N = (LL)を読み出します(); M = (LL)を読み出します(); printf(" %LLDする\ n " 、ルーカス(N、M))。 } 戻り 0 。 }