Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
В гостинице для жирафов администрация хочет запастись подушками так, чтобы удовлетворить потребности любого своего возможного постояльца. Известно, что в зависимости от длины их шеи нужно сложить стопку подушек (в стопке одна или несколько подушек) толщиной от 1 до n сантиметров. При этом администрация хочет обойтись как можно меньшим числом подушек, а среди наборов подушек, удовлетворяющих этим требованиям, администрация выберет набор минимальной суммарной толщины, чтобы он занимал минимальный объём в шкафу. Помогите администрации составить нужный набор подушек, позволяющий получить стопку любой высоты от 1 до n сантиметров включительно.
Arnfinn ответил на вопрос 24.10.2023
1 Ответ
Ответ:
- #include <iostream>
- using namespace std;
- #define ll long long
- int main() {
- ll n; cin >> n;
- for (ll i = 1; i * 2 — 1 < n; i *= 2) {
- cout << i << » «;
- if (i * 4 — 1 >= n) {
- cout << n — i * 2 + 1 << » «;
- break;
- }
- }
- }
Arnfinn ответил на вопрос 24.10.2023