Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- https://yandex.ru/cup/algorithm/analysis/
- D. Задача для собеседования
- Отправить решение задачи на платформе Яндекс.Контест
- Условие задачи
- Ограничение времени 3 секунды
- Ограничение памяти 512Mb
- Ввод стандартный ввод или input.txt
- Вывод стандартный вывод или output.txt
- Алексей регулярно проводит собеседования с кандидатами на позицию стажёра. И хотя он провёл уже не одну сотню собеседований, в последнее время этот процесс даётся ему нелегко — кандидаты стали без труда решать все годами протестированные и отработанные задачи Алексея!
- Делать нечего, и в преддверии очередного собеседования Алексей придумал новую задачу. Имеется числовая последовательность, на первом шаге состоящая из двух чисел 1. На каждом следующем шаге между каждыми двумя соседними элементами добавляется новый элемент, равный их сумме. После первых нескольких шагов последовательность выглядит следующим образом:
- • 1 1
- • 1 2 1
- • 1 3 2 3 1
- • 1 4 3 5 2 5 3 4 1
- На собеседовании Алексей хочет попросить кандидата написать программу, которая по заданному числу n будет определять, сколько раз число n будет встречаться в последовательности на n-м шаге? Алексей ещё не научился решать свою задачу, но слышал, что кандидат, с которым он сейчас будет проводить собеседование, добился высоких результатов в спортивном программировании, поэтому, скорее всего, легко справится с этим вопросом.
- Формат ввода
- Во входных данных записано единственное число
- Формат вывода
- Выведите одно целое число, равное количеству вхождений числа
- в описанную в условиях последовательность на шаге
- .
- Пример 1
- Ввод Вывод
- 4 2
- Пример 2
- Ввод Вывод
- 1 2
- """
- from time import time
- from collections import Counter
- def Factor(n):
- Ans = []
- d = 2
- while d * d <= n:
- if n % d == 0:
- Ans.append(d)
- n //= d
- else:
- d += 1
- if n > 1:
- Ans.append(n)
- return Ans
- n = int(input())
- stt=time()
- if n==1:
- res = 2
- else:
- A = Factor(n)
- D = Counter(A)
- res = 1
- for p,k in D.items():
- res *= p**k - p**(k-1)
- print(res)
- print(time()-stt)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement