結果
| 問題 |
No.73 helloworld
|
| コンテスト | |
| ユーザー |
kongarishisyamo
|
| 提出日時 | 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;
}
kongarishisyamo