Submission #4255962
Source Code Expand
#include<stdio.h>
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<string.h>
using namespace std;
typedef long long LL;
typedef vector<int> VI;
#define REP(i,n) for(int i=0, i##_len=(n); i<i##_len; ++i)
#define EACH(i,c) for(__typeof((c).begin()) i=(c).begin(),i##_end=(c).end();i!=i##_end;++i)
#define eprintf(...) fprintf(stderr, __VA_ARGS__)
template<class T> inline void amin(T &x, const T &y) { if (y<x) x=y; }
template<class T> inline void amax(T &x, const T &y) { if (x<y) x=y; }
template<class Iter> void rprintf(const char *fmt, Iter begin, Iter end) {
for (bool sp=0; begin!=end; ++begin) { if (sp) putchar(' '); else sp = true; printf(fmt, *begin); }
putchar('\n');
}
template<unsigned MOD> struct ModInt {
static const unsigned static_MOD = MOD;
unsigned x;
void undef() { x = (unsigned)-1; }
bool isnan() const { return x == (unsigned)-1; }
inline int geti() const { return (int)x; }
ModInt() { x = 0; }
ModInt(const ModInt &y) { x = y.x; }
ModInt(int y) { if (y<0 || (int)MOD<=y) y %= (int)MOD; if (y<0) y += MOD; x=y; }
ModInt(unsigned y) { if (MOD<=y) x = y % MOD; else x = y; }
ModInt(long long y) { if (y<0 || MOD<=y) y %= MOD; if (y<0) y += MOD; x=y; }
ModInt(unsigned long long y) { if (MOD<=y) x = y % MOD; else x = y; }
ModInt &operator+=(const ModInt y) { if ((x += y.x) >= MOD) x -= MOD; return *this; }
ModInt &operator-=(const ModInt y) { if ((x -= y.x) & (1u<<31)) x += MOD; return *this; }
ModInt &operator*=(const ModInt y) { x = (unsigned long long)x * y.x % MOD; return *this; }
ModInt &operator/=(const ModInt y) { x = (unsigned long long)x * y.inv().x % MOD; return *this; }
ModInt operator-() const { return (x ? MOD-x: 0); }
ModInt inv() const {
unsigned a = MOD, b = x; int u = 0, v = 1;
while (b) {
int t = a / b;
a -= t * b; swap(a, b);
u -= t * v; swap(u, v);
}
if (u < 0) u += MOD;
return ModInt(u);
}
ModInt pow(long long y) const {
ModInt b = *this, r = 1;
if (y < 0) { b = b.inv(); y = -y; }
for (; y; y>>=1) {
if (y&1) r *= b;
b *= b;
}
return r;
}
friend ModInt operator+(ModInt x, const ModInt y) { return x += y; }
friend ModInt operator-(ModInt x, const ModInt y) { return x -= y; }
friend ModInt operator*(ModInt x, const ModInt y) { return x *= y; }
friend ModInt operator/(ModInt x, const ModInt y) { return x *= y.inv(); }
friend bool operator<(const ModInt x, const ModInt y) { return x.x < y.x; }
friend bool operator==(const ModInt x, const ModInt y) { return x.x == y.x; }
friend bool operator!=(const ModInt x, const ModInt y) { return x.x != y.x; }
};
const LL MOD = 1000000007;
//const LL MOD = 998244353;
typedef ModInt<MOD> Mint;
int N, M, K;
Mint dp[4011][4011];
void MAIN() {
scanf("%d%d%d", &N, &M, &K);
dp[0][0] = 1;
int LEN = (N+M-1) / (K-1);
dp[0][0] = 1;
REP (i, LEN) {
Mint s = 0;
REP (m, M+1) {
s += dp[i][m];
if (m >= K) s -= dp[i][m-K];
dp[i+1][m] += s;
}
}
Mint ans = 0;
for (int i=0; i*(K-1)<M; i++) {
ans += dp[LEN-i][M-i*(K-1)];
}
printf("%d\n", ans.geti());
}
int main() {
int TC = 1;
// scanf("%d", &TC);
REP (tc, TC) MAIN();
return 0;
}
Submission Info
Submission Time
2019-02-14 02:09:44+0900
Task
E - Eternal Average
User
natsugiri
Language
C++14 (GCC 5.4.1)
Score
1600
Code Size
3388 Byte
Status
AC
Exec Time
47 ms
Memory
63104 KB
Compile Error
./Main.cpp: In function ‘void MAIN()’:
./Main.cpp:76:32: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d", &N, &M, &K);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
1600 / 1600
Status
Set Name
Test Cases
Sample
s1.txt, s2.txt, s3.txt
All
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, s1.txt, s2.txt, s3.txt
Case Name
Status
Exec Time
Memory
01.txt
AC
25 ms
63104 KB
02.txt
AC
47 ms
63104 KB
03.txt
AC
25 ms
63104 KB
04.txt
AC
25 ms
63104 KB
05.txt
AC
37 ms
63104 KB
06.txt
AC
29 ms
63104 KB
07.txt
AC
25 ms
63104 KB
08.txt
AC
25 ms
63104 KB
09.txt
AC
26 ms
63104 KB
10.txt
AC
26 ms
63104 KB
11.txt
AC
25 ms
63104 KB
12.txt
AC
25 ms
63104 KB
13.txt
AC
25 ms
63104 KB
14.txt
AC
25 ms
63104 KB
15.txt
AC
25 ms
63104 KB
16.txt
AC
25 ms
63104 KB
17.txt
AC
25 ms
63104 KB
18.txt
AC
26 ms
63104 KB
19.txt
AC
26 ms
63104 KB
20.txt
AC
28 ms
63104 KB
21.txt
AC
25 ms
63104 KB
22.txt
AC
28 ms
63104 KB
23.txt
AC
25 ms
63104 KB
24.txt
AC
26 ms
63104 KB
s1.txt
AC
25 ms
63104 KB
s2.txt
AC
25 ms
63104 KB
s3.txt
AC
26 ms
63104 KB