Масив і знову додавання
Є масив , елементи якого пронумеровані від до . Початково для , а останній елемент рівний .
Масив можна змінювати, використовуючи операції збільшення. Для того, щоб виконати операцій збільшення, необхідно вибрати цілих чисел () та послідовно виконати операції присвоєння для від до .
Задано ціле число . Знайдіть послідовність операцій збільшення, після виконання яких елемент на першій позиції в масиві стане рівним .
Вхідні дані
У першому рядку задано два цілі числа , (, ) — кількість наборів вхідних даних та номер блоку тестів відповідно.
У наступних рядках задано по одному цілому числу () — значенню, якому повинно дорівнювати після виконання операцій збільшення в черговому наборі.
Вихідні дані
Для кожного набору вхідних даних у першому рядку виведіть одне ціле число () — кількість операцій збільшення.
У другому рядку виведіть цілих чисел () — параметри операцій збільшення.
Якщо існує кілька правильних відповідей, дозволяється вивести будь-яку з них.
Приклади
1 0 1
99 99 98 ... 7 6 5 4 3 2 1
2 0 3 16
101 99 98 ... 7 6 5 4 3 2 1 1 1 103 99 98 ... 7 6 5 4 4 3 3 2 2 1 1
Примітка
Для наочності приклади вихідних даних в умові зменшено: для отримання правильної відповіді необхідно замінити «...
» на послідовність цілих чисел від до .
Розглянемо другий набір вхідних даних другого прикладу . Перші 8 елементів масиву після виконання чергової операції виглядають наступним чином:
= 99, ;
= 98, ;
, ;
, ;
, ;
, ;
, ;
, ;
, ;
, ;
, ;
, ;
, .
Оцінювання
У перших чотирьох блоках тестів дозволяється використати не більше ніж 300 операцій збільшення.
( бали): ;
( балів): для деякого цілого ;
( балів): для деякого цілого ;
( балів): — число Фібоначчі ( є одним з елементів послідовності, де кожен елемент є сумою двох попередніх: );
(до балів): без додаткових обмежень. Нехай максимальна кількість використаних операцій збільшення дорівнює . Якщо , то ви отримаєте балів, а інакше ви отримаєте () балів.
Код на мові C++
, який обчислює кількість балів за останній блок тестів залежно від кількості використаних операцій збільшення:
((c <= 300) ? 67 : (17 + (2000 - c) / 34))