0 / 0 / 1
Регистрация: 18.02.2018
Сообщений: 112
1

По данному числу Y определить номер дня, в который пробег спортсмена составил не менее Y километров

06.04.2018, 07:23. Показов 12166. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!
Решаю такую задачу:
Кликните здесь для просмотра всего текста
В первый день спортсмен пробежал X километров. В каждый последующий день он увеличивал пробег на 15% от предыдущего дня. По данному числу Y требуется определить номер дня, в который пробег спортсмена составил не менее Y километров.

Входные данные
Входной файл INPUT.TXT содержит два положительных вещественных числа X и Y (X,Y ≤ 1000).

Выходные данные
В выходной файл OUTPUT.TXT выведите целое число – номер дня, в который спортсмен пробежал не менее Y километров.

Примеры:
1. input:10 20
output: 6
2. input: 1 1000
output: 51
Я написал вот такой вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main(){
    double x,y;
    cin>>x>>y;
    int a=1;
    double s=x;
    while(s<y){
        s+=s*0.15;
        a++;
    }
    cout<<a;
}
Я отправляю свой код в acmp, думал, что с первого раза сдам, а мне acmp пишет неправильный ответ на 9 тесте. Помогите мне, пожалуйста, в чем я ошибся.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2018, 07:23
Ответы с готовыми решениями:

Определите номер дня, на который пробег спортсмена составит не менее У километров
В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 10% от...

Определить день когда пробег спортсмена составит не менее заданного
В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 70% от...

Определите номер дня, на который пробег спортсмена составит не менее Y километров
Помогите с решением задачи, пожалуйста. В Паскале как делать понимаю, а вот с программированием в...

Определите номер дня, на который пробег спортсмена составит не менее y километров
В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 70% от...

8
31 / 27 / 20
Регистрация: 26.10.2017
Сообщений: 88
06.04.2018, 11:13 2
Твои же слова: "составил не менее Y км"
А у тебя условие цикла можно перевести на русский как: "выполняй цикл, пока s<y", а должно то быть: " выполнял цикл пока s<=y(так как не менее это и есть равно)"
Тоесть должно быть так
C++
1
while(s<=y)
Добавлено через 1 минуту
Видимо в провальном тесте на этом и сделан подвох.
0
0 / 0 / 1
Регистрация: 18.02.2018
Сообщений: 112
06.04.2018, 11:41  [ТС] 3
Евгений754, я поменял в цикле на <= и все равно неправильный ответ на том же тесте. Видимо, там подвох в другом.
0
31 / 27 / 20
Регистрация: 26.10.2017
Сообщений: 88
06.04.2018, 11:45 4
дай мне сам провальный тест, я прогоню у себя его и подккорректирую
0
0 / 0 / 1
Регистрация: 18.02.2018
Сообщений: 112
06.04.2018, 12:07  [ТС] 5
Евгений754, acmp тесты не распространяет.

Добавлено через 13 минут
Евгений754, я нашел в своём коде вот такой провальный тест:
input: 5 5
у меня выводит ответ 2, а должно быть 1.
Я добавил вот такое условие:
C++
1
2
3
4
if(x==y){
    cout<<1;
    return 0;
}
Потом я отправил свой код из новым условием:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main(){
    double x,y;
    cin>>x>>y;
    if(x==y) {
        cout<<1;
        return 0;
    }
    int a=1;
    double s=x;
    while(s<=y){
        s+=s*0.15;
        a++;
    }
    cout<<a;
}
и все равно неправильный ответ на том же тесте. Значит тест там не тот, который я предложил.
0
31 / 27 / 20
Регистрация: 26.10.2017
Сообщений: 88
06.04.2018, 12:17 6
Немного изменил код вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main(){
    float x,y;
    cin>>x>>y;
    int n = 1;
    while(x<y){
        x=x * 0.15 + x;
        n = n + 1;
    }
    cout << n;
}
Теперь на 99% запустится.
Облазил много сайтов - везде примерно такой код, конкретно этот вариант переписал с паскаля, на нем как писали на другом сайте все работает.
0
0 / 0 / 1
Регистрация: 18.02.2018
Сообщений: 112
06.04.2018, 12:24  [ТС] 7
Как же так!!! Теперь неправильный ответ на 11 тесте.

Добавлено через 2 минуты
Поменял float на double - неправильный ответ на 13 тесте.
0
31 / 27 / 20
Регистрация: 26.10.2017
Сообщений: 88
06.04.2018, 12:30 8
Тогда точно не знаю. На всех сайтах где такое решение было - все ок. Возможно это еще связано с представлением типов данных с плавающей точкой в c++ и процессоре, ведь на паскале том же это работает.
0
0 / 0 / 1
Регистрация: 18.02.2018
Сообщений: 112
06.04.2018, 12:36  [ТС] 9
Всё. Я решил эту задачу. Решил я ее вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <cmath>
int main()
{
   double x,y;
   std::cin >> x >> y;
   int c = 1;
   for(; abs(x-y)>0.01 && x<y; x*=1.15){
      c++;
   }
   std::cout << c;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2018, 12:36
Помогаю со студенческими работами здесь

Определите номер дня, на который пробег спортсмена составит не менее y километров
Пробовала решить по разному, никак не выходит В первый день спортсмен пробежал x километров, а...

Определите номер дня, на который суммарный пробег спортсмена составит не менее Y километров
В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 70% от...

Определите номер дня, на который суммарный пробег спортсмена составит не менее Y километров
помогите пожалуйста срочно В первый день спортсмен пробежал x километров, а затем он каждый день...

Определить, через сколько дней общий суммарный пробег спортсмена составит не менее X км
Циклы с проверкой условий Начав тренировки, В первый день тренировок спортсмен пробежал N...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru