아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Обратная задача о черепашке

시간 제한3초메모리 제한256 MB

요약
목표 경로 수 k가 주어질 때, 거북이의 단조 이동 경로 수가 정확히 k가 되도록 300x300 이하 격자의 허용 칸과 차단 칸을 구성한다.
난이도

보통10점 중 6점

유형
동적 계획법, 조합론, 수학, 구현
정답자
아직 제출이 없습니다

문제

Одной из задач, решаемых методом динамического программирования, является задача о черепашке. Приведем условие этой задачи.

Задано поле размером n на m клеток. При этом для каждой клетки поля задано, является она разрешенной или запрещенной (левая верхняя и правая нижняя клетки обязательно разрешены). В левой верхней клетке находится черепашка. Черепашка за один ход может переместиться в соседнюю разрешенную клетку поля, которая находится либо справа, либо снизу от клетки, в которой она сейчас находится. Необходимо определить число путей, которыми черепашка может достичь правой нижней клетки поля, начав путь из левой верхней клетки.

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

입력

Первая строка содержит число k (1 ≤ k ≤ 1018).

출력

В первой строке выведите два целых числа, разделенных пробелом, — n и m. Эти числа не должны быть менее единицы или превышать 300.

Затем выведите n строк по m символов в каждой — описание поля. Разрешенной клетке поля должен соответствовать символ «1», запрещенной — «0». Левая верхняя и правая нижняя клетки поля должны быть разрешенными.

При наличии нескольких полей, удовлетворяющих указанным требованиям, выведите любое из них. Существование хотя бы одного такого поля гарантируется.

예제1

  1. 예제 1

    입력
    2
    
    예상 출력
    2 3
    111
    011