Submission #4046376
Source Code Expand
#include <bits/stdc++.h> using namespace std; using ll = long long; using ull = unsigned long long; const int MD = 1e9+7; struct Mint { typedef Mint M; int v; Mint(int _v = 0) : v(_v) {} M& operator += (const M &r) { if ((v += r.v) >= MD) v -= MD; return *this; } M& operator -= (const M &r) { if ((v -= r.v) < 0) v += MD; return *this; } M& operator *= (const M &r) { v = ll(v)*r.v%MD; return *this; } M operator + (const M &r) const { return M(*this) += r; } M operator - (const M &r) const { return M(*this) -= r; } M operator * (const M &r) const { return M(*this) *= r; } M pow(int n) const { M x = *this, r = 1; while (n) { if (n&1) r *= x; x *= x; n >>= 1; } return r; } M inv() const { return this->pow(MD-2); } }; const int B = 999999; int N, M, K; Mint fac[B], ifac[B]; Mint C(int n, int m) { if (n < 0 || m < 0 || n < m) return Mint(0); return fac[n]*ifac[m]*ifac[n-m]; } void first() { fac[0] = 1; for (int i = 1; i < B; i++) fac[i] = fac[i-1]*Mint(i); ifac[B-1] = fac[B-1].inv(); for (int i = B-2; i >= 0; i--) ifac[i] = ifac[i+1]*Mint(i+1); } int main() { first(); cin >> N >> M >> K; if (M > K) swap(M, K); Mint ans = 0; for (int i = 0; i <= M; i++) { ans += C(N-1+i, N-1) * Mint(2).pow(i) * Mint(3).pow(M+K-i); } Mint sm = Mint(2).pow(M); for (int i = M+1; i <= M+K; i++) { sm = Mint(2) * sm - C(i-1, M) + C(i-1, i-2-M) - C(i, i-1-M); ans += C(N-1+i, N-1) * sm * Mint(3).pow(M+K-i); } cout << ans.v << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | F - Card Game for Three |
User | hfccccccccccccc |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1786 Byte |
Status | WA |
Exec Time | 117 ms |
Memory | 8064 KB |
Judge Result
Set Name | Sample | subtask1 | All | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 500 | 0 / 600 | ||||||||
Status | AC |
|
|
Set Name | Test Cases |
---|---|
Sample | |
subtask1 | 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 |
All | sample_01.txt, sample_02.txt, sample_03.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, subtask2_01.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, subtask2_11.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 17 ms | 8064 KB |
sample_02.txt | AC | 17 ms | 8064 KB |
sample_03.txt | AC | 17 ms | 8064 KB |
subtask1_01.txt | WA | 17 ms | 8064 KB |
subtask1_02.txt | AC | 17 ms | 8064 KB |
subtask1_03.txt | WA | 17 ms | 8064 KB |
subtask1_04.txt | WA | 17 ms | 8064 KB |
subtask1_05.txt | WA | 17 ms | 8064 KB |
subtask1_06.txt | WA | 17 ms | 8064 KB |
subtask1_07.txt | WA | 17 ms | 8064 KB |
subtask1_08.txt | WA | 17 ms | 8064 KB |
subtask1_09.txt | WA | 17 ms | 8064 KB |
subtask1_10.txt | WA | 17 ms | 8064 KB |
subtask2_01.txt | AC | 117 ms | 8064 KB |
subtask2_02.txt | WA | 106 ms | 8064 KB |
subtask2_03.txt | WA | 58 ms | 8064 KB |
subtask2_04.txt | WA | 51 ms | 8064 KB |
subtask2_05.txt | WA | 101 ms | 8064 KB |
subtask2_06.txt | WA | 117 ms | 8064 KB |
subtask2_07.txt | WA | 117 ms | 8064 KB |
subtask2_08.txt | WA | 53 ms | 8064 KB |
subtask2_09.txt | WA | 52 ms | 8064 KB |
subtask2_10.txt | WA | 117 ms | 8064 KB |
subtask2_11.txt | AC | 17 ms | 8064 KB |