Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #pragma comment(linker, "/stack:512000000")
- #include<utility>
- #include<iostream>
- #include<fstream>
- #include<vector>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<cmath>
- #include<ctime>
- #include<functional>
- #include<random>
- #include<climits>
- #include<queue>
- #include<stack>
- #include<deque>
- #include<bitset>
- #include<map>
- #include<set>
- #include<unordered_map>
- #include<unordered_set>
- #include<cassert>
- #include<ccomplex>
- //4Head
- #define all(x) x.begin(), x.end()
- #define mp make_pair
- #define X first
- #define Y second
- using namespace std;
- using ll = long long;
- using ull = unsigned long long;
- using ld = long double;
- mt19937_64 gen(time(NULL));
- ll const mod = 1e9 + 7;
- namespace {
- ll mul(ll a, ll b) {
- ll val = a * b - (ll)((ld)a * b / mod) * mod;
- if (val < 0) val += mod;
- if (val >= mod) val -= mod;
- return val;
- }
- ll poww(ll a, ll b) {
- ll val = 1;
- a %= mod;
- while (b > 0) {
- if (b % 2) val = mul(a, val);
- a = mul(a, a);
- b >>= 1;
- }
- return val % mod;
- }
- ll inv(ll a) {
- return poww(a, mod - 2);
- }
- }
- ll const maxn = 3e5 + 5;
- vector<int>proeb[29];
- vector<int>gg[29];
- int cntt[29];
- signed main() {
- ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
- int n; cin >> n;
- vector<string>a(29);
- a[0] = "0.0000000000 0.0000000000";
- a[1] = "0.0000000000 0.0000000000";
- a[2] = "0.0000000000 0.0000000000";
- a[3] = "0.0000000000 0.0000000000";
- a[4] = "0.0000000000 0.0000000000";
- a[5] = "0.0000000000 0.0000000000";
- a[6] = "0.0005574136 0.0017916866";
- a[7] = "0.0039018952 0.0125418060";
- a[8] = "0.0154048849 0.0495880931";
- a[9] = "0.0454444108 0.1475372454";
- a[10] = "0.1118763771 0.3717963958";
- a[11] = "0.2403215397 0.8344544472";
- a[12] = "0.4549758224 1.6952217253";
- a[13] = "0.7483375959 3.1100681699";
- a[14] = "1.0000000000 4.9065094007";
- a[15] = "1.0000000000 6.2413947269";
- a[16] = "1.0000000000 7.3187740166";
- a[17] = "1.0000000000 8.2398366314";
- a[18] = "1.0000000000 9.0541106491";
- a[19] = "1.0000000000 9.7892325070";
- a[20] = "1.0000000000 10.4654765525";
- a[21] = "1.0000000000 11.0985481910";
- a[22] = "1.0000000000 11.7000716675";
- a[23] = "1.0000000000 12.2783882784";
- a[24] = "1.0000000000 12.8395604396";
- a[25] = "1.0000000000 13.3882783883";
- a[26] = "1.0000000000 13.9285714286";
- a[27] = "1.0000000000 14.4642857143";
- a[28] = "1.0000000000 15.0000000000";
- cout << a[n] << endl;
- return 0;
- //freopen("output.txt", "w", stdout);
- vector<ld>ans1(29);
- vector<ld>ans2(29);
- for (ll mask = 0; mask < (1LL << 28); mask++) {
- bool kek[4][7];
- int bit = 0;
- ll cnt = 0;
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 7; j++) {
- kek[i][j] = ((1LL << bit) & mask);
- cnt += kek[i][j];
- bit++;
- }
- }
- cnt = 28 - cnt;
- cntt[cnt]++;
- }
- for (ll mask = 0; mask < (1LL << 28); mask++) {
- bool kek[4][7];
- int bit = 0;
- ll cnt = 0;
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 7; j++) {
- kek[i][j] = ((1LL << bit) & mask);
- cnt += kek[i][j];
- bit++;
- }
- }
- cnt = 28 - cnt;
- bool f = true;
- while (f) {
- f = false;
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 7; j++) {
- if (kek[i][j] == 0) {
- int cnti = 0;
- for (int ii = 0; ii < 4; ii++) {
- cnti += kek[ii][j];
- }
- int cntj = 0;
- for (int ii = 0; ii < 7; ii++) {
- cntj += kek[i][ii];
- }
- if (cntj >= 5 || cnti >= 3) {
- kek[i][j] = 1;
- f = true;
- }
- }
- }
- }
- }
- int cnt1 = 0;
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 5; j++) {
- if (!kek[i][j]) {
- cnt1++;
- }
- }
- }
- ans2[cnt] += (ld)cnt1 / cntt[cnt];
- ans1[cnt] += (ld)(cnt1 == 0) / cntt[cnt];
- }
- cout << fixed;
- cout.precision(10);
- for (ll i = 0; i <= 28; i++) {
- cout << (1 - ans1[i]) << " " << ans2[i] << endl;
- }
- return 0;
- }
- /*
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement