結果
問題 |
No.148 試験監督(3)
|
ユーザー |
![]() |
提出日時 | 2015-02-09 00:27:34 |
言語 | PyPy2 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 713 bytes |
コンパイル時間 | 742 ms |
コンパイル使用メモリ | 77,184 KB |
実行使用メモリ | 86,656 KB |
最終ジャッジ日時 | 2024-06-23 09:14:57 |
合計ジャッジ時間 | 5,145 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | TLE * 1 -- * 11 |
ソースコード
import sys import math def comb(x,y): if y>x-y: y=x-y n1=0 x2=x; while x2: n1 += x2/mo x2 /= mo y2=y n2=0 while y2: n2 += y2/mo y2 /= mo if n1 > n2: return 0 # 10^6毎に値を埋め込みそうな気がするが # 良い埋め込み方が思いつかない ret = 1 x%=mo x+=mo for i in range(y): ret = ret * (x-i) % mo return ret def hcomb(x,y): if x == 0: return 1 return comb(x+y-1,y) T=input() mo=1000000007 for i in range(T): C,P=map(int,raw_input().strip().split(" ")) if P*2-1>C: print 0 continue elif P==1: print C%mo continue else: ret = 0 ret += hcomb(C-(P+P-1),P-1) ret += hcomb(C-(P+P),P)*2 ret += hcomb(C-(P+P+1),P+1) print ret % mo