結果
| 問題 | No.242 ビンゴゲーム |
| コンテスト | |
| ユーザー |
Kmcode1
|
| 提出日時 | 2015-07-10 23:04:21 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,621 bytes |
| 記録 | |
| コンパイル時間 | 594 ms |
| コンパイル使用メモリ | 95,388 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-07-08 02:05:01 |
| 合計ジャッジ時間 | 5,192 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 2 |
| other | AC * 1 WA * 7 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:49:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
49 | scanf("%d", &n);
| ~~~~~^~~~~~~~~~
ソースコード
#include<iostream>
#include<cstdio>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cctype>
#include<cstdlib>
#include<algorithm>
#include<bitset>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<cmath>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<ctime>
#include<complex>
#include<functional>
#include<climits>
#include<cassert>
#include<iterator>
#include<unordered_map>
using namespace std;
int n;
int t[5];
int y[5];
double ans = 0.0;
/*int __builtin_popcount(int a){
int r = 0;
while (a){
if ((a & 1)){
r++;
}
a >>= 1;
}
return r;
}*/
double p9[102];
double H[102];
int main(){
p9[0] = 1.0;
H[0] = 1.0;
scanf("%d", &n);
double P = (double)(n) / (double)(99.0);
double PP = 1.0 - P;
for (int i = 1; i < 102; i++){
p9[i] = p9[i - 1];
p9[i] *= P;
H[i] = H[i - 1];
H[i] *= PP;
}
for (int i = 0; i < 25; i+=5){
int val = 0;
for (int j = i; j < i + 5; j++){
val |= (1 << j);
}
t[i/5] = val;
}
for (int i = 0; i < 5; i++){
int val = 0;
for (int j = i; j < 25; j += 5){
val |= (1 << j);
}
y[i] = val;
}
int countt = 0;
for (int i = 0; i < (1 << 25); i++){
countt = 0;
for (int j = 0; j < 5; j++){
if ((i&t[j]) == t[j]){
countt++;
}
if ((i&y[j]) == y[j]){
countt++;
}
}
int v = __builtin_popcount(i);
int ot = 99 - 25;
if (ot + v < n){
continue;
}
if (v>n){
continue;
}
if (countt == 0){
continue;
}
double pro = p9[v]*p9[n-v]*(double)(countt);
ans += pro;
}
printf("%.6f\n", ans);
return 0;
}
Kmcode1