Submission #15800

#TimeUsernameProblemLanguageResultExecution timeMemory
15800didw맛있는 과자 (kriii3_A)C++98
0 / 33
0 ms1828 KiB
#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

double rs, rb;

double solve(double S0, int n, long long k) {
    if (n == 0)
        return log(S0);
    // k가 전체 과자 개수보다 크다면 작은 과자조각으로 반환
    if (k >= (1<<n)) {
        return solve(S0*rs, n-1, k/2);
    }
    // 아니면 큰 조각으로 반환
    return solve(S0*rb, n-1, k);
}

int main() {
    long long a, b, n, k;
    cin >> a >> b >> n >> k;
    if (a > b) swap(a, b);
    rs = (double)a*a / (double)(a*a + b*b);
    rb = (double)b*b / (double)(a*a + b*b);
    double S0 = a*b / 2.0;
    printf("%.12f\n", solve(S0, n, k));
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...