В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
sasharaiskaja
sasharaiskaja
20.12.2021 07:04 •  Информатика

Задача №8. Спиннер – модная игрушка c подшипником в основании, к которому прикреплены лопасти. Афанасий открыл бизнес по производству спиннеров. Он выяснил, что за спиннер,у которого N лопастей, покупатели готовы платить A + B × N рублей, но при этом покупатель не станет покупать спиннер, если его цена будет выше C рублей. Определите максимальное число лопастей спиннера, который согласится приобрести покупатель.Программа получает на вход три числа A, B, C (стоимость основания спиннера,стоимость одной лопасти и максимальная стоимость всего спиннера). Все числа – целые положительные, не превосходящие 20000000000 , при этом A ≤ C.Программа должна вывести одно число – максимальное число лопастей спиннера.

Показать ответ
Ответ:
smusylolo
smusylolo
15.10.2020 16:24

Так и не получил ответ, надо считать A + B * N или (A + B) * N, поэтому использовал второй вариант. Если что, можно легко поменять.

На C++:

#include <iostream>

#include <conio.h>

#include <string>

using namespace std;

int main() {

setlocale(0, "RU");

try {

 string InputError = "Ошибка ввода";

 cout << "Введите стоимость основания спиннера: ";

 int a;

 cin >> a;

 if (cin.fail()) {

  throw(InputError);

 }

 cout << "Введите стоимость одной лопасти: ";

 int b;

 cin >> b;

 if (cin.fail()) {

  throw(InputError);

 }

 cout << "Введите максимальную цену всего спиннера: ";

 int c;

 cin >> c;

 if (cin.fail()) {

   

  throw(InputError);

 }

 int max = 20000000000;

 if (a <= c && a != max && b != max && c != max) {

  int n = 1;

  while (true) {

   if ((a + b) * n <= c) {

    n++;

   }

   else {

    n--;

    break;

   }

  }

  system("cls");

   

  cout << n;

 }

 else {

  string InvalidValues = "Недопустимые значения";

  throw(InvalidValues);

 }

}

catch (string a) {

 cout << "\n" << a << "...";

 _getch();

}

return 0;

}

0,0(0 оценок)
Ответ:
damila3434
damila3434
15.10.2020 16:24

Произведем вывод формулы расчета количества лопастей:

S = A + B \cdot N

S_{max} = C

C = A + B \cdot N

N = (C - A) / B

Так как все операнды целые числа, мы имеем целочисленное деление и целое число в результате. Это сравнимо с округлением вниз, поэтому С по стоимости мы не перепрыгнем.

Код:

#include <iostream>

long long calculate_spin_number(

       long long A,

       long long B,

       long long C

) {

   return std::max((C - A) / B, 0ll);

}

int main () {

   long long A, B, C;

   std::cin >> A >> B >> C;

   std::cout << calculate_spin_number(A, B, C) << std::endl;

   return 0;

}

Функция calculate_spin_number() рассчитывает количество лопастей по параметрам A, B, C.

(!!) Внимание! Мы не можем использовать int или unsigned int для хранения чисел такого размера как 20000000000. Нужно использовать long или long long.

===========================================================

Если ответ удовлетворил, не забудь отметить его как "Лучший".

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота