Олимпиадная задача на вероятность

197
05 декабря 2017, 20:52

Есть проблема с одной олимпиадной задачей, но решить мне её нужно на 100. Задача находится https://www.e-olymp.com/ru/problems/7272 по этому адресу. Задачу решить нужно на любом языке программирования. Моё решение проходит лишь на 81%. Условие задачи состоит в следующем:

Вася попал в серьёзную передрягу. Он задолжал мафии N долларов, и время расплаты почти подошло. Вася хорошо знает, чем грозит несвоевременный возврат долга, поэтому он хочет собрать N долларов любой ценой.

Однако, на данный момент у него есть только M долларов. Приятель, который узнал о проблемах Васи, предложил Васе игру — в этот раз на деньги. У Васи есть K попыток сделать ставку на любую сумму от нуля до той суммы, которая у него есть — не обязательно даже целую. С вероятностью P % Вася получает ставку в двойном объёме, иначе не получает ничего. Васе не важно, сколько денег у него останется в итоге, главное, чтобы было N долларов, чтобы расплатиться. Вася, конечно же, играет оптимально. Узнайте, с какой вероятностью ему повезёт и он расплатится деньгами."

Есть чувство, что я не учитываю какую-то очень важную особенность

Вот код, которым я пытался решать:

#include "iostream"
#include "stdio.h"
using namespace std;
int main()
{
long int dolg;
long int deng;
long int popitki;
double chance;
cin >> dolg >> deng >> popitki >> chance;
chance *= 0.01;
double chance_now = chance;
        double answer = 0;
        double left,right,middle;
        left = 0;
        right = dolg;
        middle = dolg / 2;

        if (dolg > deng) {
            while (popitki > 0)
            {
                if (deng < middle)
                {
                    chance_now *= chance;
                    right = middle;
                    middle = (right + left) /2 ;
                } else {
                    answer += chance_now;
                    chance_now *= (1-chance);
                    left = middle;
                    middle = (right + left) /2 ;
                }
                popitki--;
            }
        }
        else
            answer = 1;
printf("%f\n", answer);
return 0;
}
READ ALSO
Формат дату в Jackson Spring Boot

Формат дату в Jackson Spring Boot

Ко мне приходит время в таком виде: "2017-12-04T15:45:11635Z"

164
Получить CID, MCC, MNC, LAC

Получить CID, MCC, MNC, LAC

Для реализации приложения требуется получить GSM Cell ID, к которой подключено устройство, приложение не нуждается в мощном интерфейсе, поэтому...

203
Ошибка запуска приложения при отладке

Ошибка запуска приложения при отладке

Не отображается название процесса в logcat, процесс устройства эмулятора отображаетсяИспользую Android Studio 3

187
JustifyTextView - выравнивание текста по обоим краям

JustifyTextView - выравнивание текста по обоим краям

Появилась нужда выровнять текст по обоим краям, WebView не подходит, хочу именно в TextView, посмотрел несколько библиотек, но для такого не совсем...

162