結果

問題 No.189 SUPER HAPPY DAY
ユーザー tnakao0123
提出日時 2016-04-11 20:00:30
言語 C++11
(gcc 13.3.0)
結果
AC  
実行時間 10 ms / 5,000 ms
コード長 1,422 bytes
コンパイル時間 771 ms
コンパイル使用メモリ 84,760 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2024-10-04 06:34:50
合計ジャッジ時間 1,721 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 23
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

/* -*- coding: utf-8 -*-
*
* 189.cc: No.189 SUPER HAPPY DAY - yukicoder
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<functional>
using namespace std;
/* constant */
const int MAX_N = 200;
const int MAX_S = MAX_N * 9;
typedef long long ll;
const ll MOD = 1000000009;
/* typedef */
/* global variables */
ll dp0[MAX_N + 1][MAX_S + 1];
ll dpm[MAX_S + 1], dpd[MAX_S + 1];
/* subroutines */
void calc_dp(string &s, ll dp[]) {
int n = s.size(), dsum = 0;
for (int i = 0; i < n; i++) {
int si = s[i] - '0', i0 = n - 1 - i;
for (int j = 0; j < si; j++)
for (int k = 0; k <= MAX_S; k++) {
int ki = dsum + j + k;
dp[ki] = (dp[ki] + dp0[i0][k]) % MOD;
}
dsum += si;
}
dp[dsum]++;
}
/* main */
int main() {
string ms, ds;
cin >> ms >> ds;
dp0[0][0] = 1;
for (int i = 0; i < MAX_N; i++)
for (int j = 0; j <= MAX_S; j++)
if (dp0[i][j] > 0)
for (int k = 0; k <= 9; k++)
dp0[i + 1][j + k] = (dp0[i + 1][j + k] + dp0[i][j]) % MOD;
calc_dp(ms, dpm);
calc_dp(ds, dpd);
ll ans = 0;
for (int i = 1; i <= MAX_S; i++)
ans = (ans + dpm[i] * dpd[i] % MOD) % MOD;
printf("%lld\n", ans);
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0