library("extraDistr")

exact_probability <- function(n, p, x) {
  dbinom(x, size = n, prob = p)
}

chebyshev_probability <- function(deviation, std_deviation) {
  1 / (deviation^2)
}

main <- function() {
  n <- 100  
  p <- 0.5  
  expected_heads <- n * p  
  std_deviation <- sqrt(n * p * (1 - p))  

  deviation <- 15  
  exact_prob <- exact_probability(n, p, expected_heads + deviation)
  chebyshev_prob <- chebyshev_probability(deviation, std_deviation)

  cat("Exact Probability:", exact_prob, "\n")
  cat("Chebyshev's Probability Bound:", chebyshev_prob, "\n")
}

main()
## Exact Probability: 0.0008638557 
## Chebyshev's Probability Bound: 0.004444444