Submission #2552269
Source Code Expand
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
InputStream inputStream = System.in;
OutputStream outputStream = System.out;
InputReader in = new InputReader(inputStream);
PrintWriter out = new PrintWriter(outputStream);
TaskX solver = new TaskX();
solver.solve(1, in, out);
out.close();
}
static int INF = 1 << 30;
static int MOD = 1000000007;
static int[] mh4 = { 0, -1, 1, 0 };
static int[] mw4 = { -1, 0, 0, 1 };
static int[] mh8 = { -1, -1, -1, 0, 0, 1, 1, 1 };
static int[] mw8 = { -1, 0, 1, -1, 1, -1, 0, 1 };
static class TaskX {
public void solve(int testNumber, InputReader in, PrintWriter out) {
int n = in.nextInt(), k = in.nextInt();
out.println(comb(n+k-1, k));
}
}
/**
* 二項係数
* 前提 n < modP
* nCr = n!/(r!*(n-r)!)である。この時分子分母にMODが来る場合は以下のように使用する
* */
public static long comb(int n,int r) {
return fact[n] * factInv[r] % MOD * factInv[n-r] % MOD;
}
/**
* 階乗数の逆元
*
* */
public static int MAXN = 200000;
static long[] fact = factorialArray(MAXN, MOD);
static long[] factInv = factorialInverseArray(MAXN, MOD, inverseArray(MAXN, MOD));
// 階乗の mod P テーブル
public static long[] factorialArray(int maxN,long mod) {
long[] fact = new long[maxN+1];
fact[0] = 1 % mod;
for(int i=1;i<=maxN;i++) {
fact[i] = fact[i-1] * i % mod;
}
return fact;
}
// 数 i に対する mod P での逆元テーブル
public static long[] inverseArray(int maxN,long modP) {
long[] inv = new long[maxN+1];
inv[1] = 1;
for(int i=2;i<=maxN;i++) {
inv[i] = modP - (modP / i) * inv[(int) (modP%i)] % modP;
}
return inv;
}
// 階乗の逆元テーブル
public static long[] factorialInverseArray(int maxN,long modP,long[] inverseArray) {
long[] factInv = new long[maxN+1];
factInv[0] = 1;
for(int i=1;i<=maxN;i++) {
factInv[i] = factInv[i-1] * inverseArray[i] % modP;
}
return factInv;
}
static class InputReader {
BufferedReader in;
StringTokenizer tok;
public String nextString() {
while (!tok.hasMoreTokens()) {
try {
tok = new StringTokenizer(in.readLine(), " ");
} catch (IOException e) {
throw new InputMismatchException();
}
}
return tok.nextToken();
}
public int nextInt() {
return Integer.parseInt(nextString());
}
public long nextLong() {
return Long.parseLong(nextString());
}
public double nextDouble() {
return Double.parseDouble(nextString());
}
public int[] nextIntArray(int n) {
int[] res = new int[n];
for (int i = 0; i < n; i++) {
res[i] = nextInt();
}
return res;
}
public long[] nextLongArray(int n) {
long[] res = new long[n];
for (int i = 0; i < n; i++) {
res[i] = nextLong();
}
return res;
}
public InputReader(InputStream inputStream) {
in = new BufferedReader(new InputStreamReader(inputStream));
tok = new StringTokenizer("");
}
}
}
Submission Info
Submission Time |
|
Task |
D - 多重ループ |
User |
tutuz |
Language |
Java8 (OpenJDK 1.8.0) |
Score |
100 |
Code Size |
3389 Byte |
Status |
AC |
Exec Time |
98 ms |
Memory |
27604 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
All |
Score / Max Score |
0 / 0 |
99 / 99 |
1 / 1 |
Status |
|
|
|
Set Name |
Test Cases |
Sample |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt, subtask0_sample_05.txt |
Subtask1 |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt |
All |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt, subtask0_sample_05.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_sample_01.txt |
AC |
97 ms |
24148 KB |
subtask0_sample_02.txt |
AC |
98 ms |
21204 KB |
subtask0_sample_03.txt |
AC |
96 ms |
22612 KB |
subtask0_sample_04.txt |
AC |
95 ms |
22228 KB |
subtask0_sample_05.txt |
AC |
96 ms |
23504 KB |
subtask1_01.txt |
AC |
97 ms |
22356 KB |
subtask1_02.txt |
AC |
94 ms |
22100 KB |
subtask1_03.txt |
AC |
95 ms |
25428 KB |
subtask1_04.txt |
AC |
96 ms |
23252 KB |
subtask1_05.txt |
AC |
96 ms |
23508 KB |
subtask1_06.txt |
AC |
93 ms |
25428 KB |
subtask1_07.txt |
AC |
98 ms |
25428 KB |
subtask1_08.txt |
AC |
96 ms |
23124 KB |
subtask1_09.txt |
AC |
95 ms |
24020 KB |
subtask1_10.txt |
AC |
96 ms |
23380 KB |
subtask1_11.txt |
AC |
95 ms |
22100 KB |
subtask1_12.txt |
AC |
94 ms |
22612 KB |
subtask1_13.txt |
AC |
98 ms |
23636 KB |
subtask1_14.txt |
AC |
95 ms |
23636 KB |
subtask1_15.txt |
AC |
95 ms |
22996 KB |
subtask1_16.txt |
AC |
95 ms |
25556 KB |
subtask1_17.txt |
AC |
94 ms |
21844 KB |
subtask1_18.txt |
AC |
94 ms |
22100 KB |
subtask1_19.txt |
AC |
94 ms |
23508 KB |
subtask2_02.txt |
AC |
96 ms |
23636 KB |
subtask2_03.txt |
AC |
95 ms |
22996 KB |
subtask2_04.txt |
AC |
96 ms |
25044 KB |
subtask2_05.txt |
AC |
95 ms |
27604 KB |
subtask2_06.txt |
AC |
94 ms |
21076 KB |
subtask2_07.txt |
AC |
96 ms |
22100 KB |
subtask2_08.txt |
AC |
95 ms |
22228 KB |
subtask2_09.txt |
AC |
96 ms |
21076 KB |
subtask2_10.txt |
AC |
95 ms |
26196 KB |