結果
問題 | No.73 helloworld |
ユーザー |
![]() |
提出日時 | 2016-03-18 13:36:06 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,048 bytes |
コンパイル時間 | 411 ms |
コンパイル使用メモリ | 56,548 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-29 13:11:47 |
合計ジャッジ時間 | 1,019 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 14 |
ソースコード
#include<iostream> #define N 100 long long comb[N + 1][N + 1]; using namespace std; int main(){ for (int i = 0; i <= N; i++){ comb[i][0] = 1; for (int j = 1; j <= i; j++){ comb[i][j] = comb[i - 1][j] + comb[i - 1][j - 1]; } } int C['z' - 'a' + 1]; char hw[] = { 'h', 'e', 'l', 'o', 'w', 'r', 'd', -1 }; int c[] = { 1, 1, 3, 2, 1, 1, 1, -1 }; int c2[] = { 1, 1, 2, 1, 1, 1, 1 }; for (int i = 'a'; i <= 'z'; i++){ cin >> C[i - 'a']; } long long ans = 1; for (int i = 0; c[i] != -1; i++){ if (C[hw[i] - 'a'] - c[i] < 0){ ans = 0; break; } if (c[i] == c2[i]){ ans *= comb[C[hw[i] - 'a']][c2[i]]; } else{ long long t2 = c[i] - c2[i]; long long t1 = C[hw[i] - 'a'] - t2; long long max = -1; //cout << t1 << "," << t2 << endl; while (t1 >= c2[i]){ //cout << comb[t1][c2[i]] << "|" << comb[t2][c[i] - c2[i]] << endl; if (max<comb[t1][c2[i]] * comb[t2][c[i] - c2[i]]) max = comb[t1][c2[i]] * comb[t2][c[i] - c2[i]]; t1--; t2++; } ans *= max; } } cout << ans << endl; }