Advertisement
Guest User

Untitled

a guest
Dec 5th, 2021
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.30 KB | None | 0 0
  1. """
  2. https://yandex.ru/cup/algorithm/analysis/
  3. D. Задача для собеседования
  4.  
  5. Отправить решение задачи на платформе Яндекс.Контест
  6. Условие задачи
  7. Ограничение времени   3 секунды
  8. Ограничение памяти 512Mb
  9. Ввод    стандартный ввод или input.txt
  10. Вывод  стандартный вывод или output.txt
  11.  
  12. Алексей регулярно проводит собеседования с кандидатами на позицию стажёра. И хотя он провёл уже не одну сотню собеседований, в последнее время этот процесс даётся ему нелегко — кандидаты стали без труда решать все годами протестированные и отработанные задачи Алексея!
  13.  
  14. Делать нечего, и в преддверии очередного собеседования Алексей придумал новую задачу. Имеется числовая последовательность, на первом шаге состоящая из двух чисел 1. На каждом следующем шаге между каждыми двумя соседними элементами добавляется новый элемент, равный их сумме. После первых нескольких шагов последовательность выглядит следующим образом:
  15.  
  16. • 1 1
  17. • 1 2 1
  18. • 1 3 2 3 1
  19. • 1 4 3 5 2 5 3 4 1
  20.  
  21. На собеседовании Алексей хочет попросить кандидата написать программу, которая по заданному числу n будет определять, сколько раз число n будет встречаться в последовательности на n-м шаге? Алексей ещё не научился решать свою задачу, но слышал, что кандидат, с которым он сейчас будет проводить собеседование, добился высоких результатов в спортивном программировании, поэтому, скорее всего, легко справится с этим вопросом.
  22. Формат ввода
  23.  
  24. Во входных данных записано единственное число
  25. Формат вывода
  26.  
  27. Выведите одно целое число, равное количеству вхождений числа
  28. в описанную в условиях последовательность на шаге
  29.  
  30. .
  31. Пример 1
  32. Ввод    Вывод
  33. 4   2
  34. Пример 2
  35. Ввод    Вывод
  36. 1   2
  37. """
  38.  
  39. from time import time
  40. from collections import Counter
  41.  
  42. def Factor(n):
  43.     Ans = []
  44.     d = 2
  45.     while d * d <= n:
  46.         if n % d == 0:
  47.             Ans.append(d)
  48.             n //= d
  49.         else:
  50.             d += 1
  51.     if n > 1:
  52.         Ans.append(n)
  53.     return Ans
  54.  
  55. n = int(input())
  56.  
  57. stt=time()
  58. if n==1:
  59.     res = 2
  60. else:
  61.     A = Factor(n)
  62.     D = Counter(A)
  63.     res = 1
  64.     for p,k in D.items():
  65.         res *= p**k - p**(k-1)
  66. print(res)
  67. print(time()-stt)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement