結果
問題 | No.574 正多面体サイコロ |
ユーザー |
|
提出日時 | 2021-09-04 01:43:46 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 36 ms / 2,000 ms |
コード長 | 1,188 bytes |
コンパイル時間 | 1,642 ms |
コンパイル使用メモリ | 168,408 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-15 22:48:47 |
合計ジャッジ時間 | 2,462 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ll = long long;#define all(A) A.begin(),A.end()using vll = vector<ll>;#define rep(i, n) for (long long i = 0; i < (long long)(n); i++)using Graph = vector<vector<ll>>;ll mod = 998244353;ll inva(ll N) {ll a = N, b = mod, c = 1, d = 0;while (b > 0) {ll t = a / b;a -= t * b;swap(a, b);c -= t * d;swap(c, d);}c %= mod;if (c < 0)c += mod;return c;}//割り算時に使う逆元を求める.int main() {double F, N, K;cin >> F >> N >> K;double an = 0;rep(i, round(F)) {double A = 0;double s = double(i) / F;double e = 1.0 / F;double b = 1.0 - e - s;rep(j, round(K))rep(k, round(N - K)+1) {double m = 1;rep(q, j)m *= b;rep(q, k)m *= s;rep(q, round(N) - j - k)m *= e;rep(q, round(N))m *= (q + 1);rep(q, j)m /= (q + 1);rep(q, round(N) - j - k)m /= (q + 1);rep(q, k)m /= (q + 1);A += m;}an += A * (i + 1);}cout << setprecision(16) << an << endl;}