結果
問題 | No.58 イカサマなサイコロ |
ユーザー |
![]() |
提出日時 | 2022-08-16 15:15:26 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,530 bytes |
コンパイル時間 | 2,765 ms |
コンパイル使用メモリ | 247,620 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-03 06:13:35 |
合計ジャッジ時間 | 3,803 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 7 WA * 3 |
ソースコード
#include <bits/stdc++.h>#define ll long long#define ld long double#define rep(i,a,b) for (int i = a; i < b; i++)#define irep(i,a,b) for (int i = a; i > b; i--)#define print(n) cout << n << endl#define rup(a,b) (a+b-1)/busing namespace std;void calc(int n, int k,bool p,int a,int now,vector<int>& A){int b = 0;if (p){if (now <= k){rep(i,4,7){b = a + i;if (now == n){A[b] ++;A[b] ++;}else{calc(n,k,p,b,now+1,A);calc(n,k,p,b,now+1,A);}}}else{rep(i,1,7){b = a + i;if (now == n){A[b] ++;}else{calc(n,k,p,b,now+1,A);}}}}else{rep(i,1,7){b = a + i;if (now == n){A[b] ++;}else{calc(n,k,p,b,now+1,A);}}}}int main(){cout << fixed << setprecision(15);int N,K;cin>>N>>K;vector<int> A(6*N+1,0);vector<int> B(6*N+1,0);calc(N,K,true,0,1,A);calc(N,K,false,0,1,B);ll ok = 0;ll all = pow(6,N)*pow(6,N);rep(i,1,6*N+1){//cout << A[i] << " " << B[i] << endl;rep(j,1,i){ok += A[i]*B[j];}}//print(ok);print((long double)ok/all);//system("pause");return 0;}