, на с++ надо Новый интернет-провайдер предоставляет услугу доступа в интернет с посекундной тарификацией. Для подключения нужно купить карточку, позволяющую пользоваться интернетом определенное количество секунд. При этом компания продает карточки стоимостью
1
,
2
,
4
,
…
,
2
30
рублей на
a
0
,
a
1
,
a
2
,
…
,
a
30
секунд соответственно.
Родители разрешили Пете пользоваться интернетом
m
секунд. Определите, за какую наименьшую сумму он сможет купить карточки, которые позволят ему пользоваться интернетом не менее
m
секунд. Естественно, Петя может купить как карточки различного достоинства, так и несколько карточек одного достоинства.
Формат входных данных
В первой строке содержится единственное натуральное число
m
(
1
≤
m
≤
10
9
)
. Во второй строке задаются натуральные числа
a
0
,
a
1
,
…
,
a
30
, не превосходящие
10
9
.
Формат результата
Выведите единственное число — наименьшую сумму денег, которую Пете придется потратить.
#include <iostream>
#include <string>
#define N 5
using namespace std;
int count_flat = 0;
struct Flat {
int n_rooms;
int square;
int floor;
string address;
double price;
void PrintInfo() {
cout << "\nКоличество комнат: " << n_rooms << "\nПлощадь " << square << "\nЭтаж:" << floor << "\nАдрес " << address << "\nЦена: " << price;
}
void InputInfo() {
cout << "Количество комнат: ";
cin >> n_rooms;
cout << "Площадь: ";
cin >> square;
cout << "Этаж: ";
cin >> floor;
cout << "Адрес: ";
getline(cin, address);
cout << "Цена: ";
cin >> price;
}
void PrintChecksInfo(int number) {
if (number >= price) {
count_flat++;
PrintInfo();
}
}
};
signed main() {
setlocale(LC_ALL, "Rus");
int choice;
Flat mas[N];
for (int i = 0; i < N; i++)
mas[i].InputInfo();
cout << "Введите стоимость: ";
cin >> choice;
for (int i = 0; i < N; i++) {
mas[i].PrintChecksInfo(choice);
}
if (count_flat <= 0)
cout << "Таких квартир нет!";
return 0;
}
Решение.
Скопируем число из ячейки A1 в ячейку P1. Поскольку ладья может ходить через неограниченное количество ячеек вниз и вправо, необходимо для каждой ячейки выбирать, из какого числа в строке до этой ячейки, и из какого числа в столбце выше этой ячейки должна сходить ладья, чтобы сумма ячеек при этом была максимальной. Для этого в ячейке Q1 запишем формулу =МАКС($P$1:P1)+B1 и скопируем её во все ячейки диапазона R1:AD1. В ячейке P2 запишем формулу =МАКС($P$1:P1)+A2 и скопируем её во все ячейки диапазона P3:P15. В ячейке Q2 запишем формулу =МАКС(МАКС($P2:P2);МАКС(Q$1:Q1))+B2 и скопируем её во все ячейки диапазона Q2:AD15. Получим ответ — 323.
ответ: 323.