PROBLEM LINK:
Author: Hrushikesh Koyadala
Tester: Hemanth Kumar NV
Editorialist: Hrushikesh Koyadala
DIFFICULTY:
MEDIUM-HARD
PREREQUISITES:
Math, Prime Factorization
PROBLEM:
Initially on a notepad only one character ‘A’ is present. You can perform two operations on this notepad for each step:
-
Copy All: You can copy all the characters present on the notepad (partial copy is not allowed). -
Paste: You can paste the characters which are copied last time .
Given a number n . You have to get exactly n ‘A’ on the notepad by performing the minimum number of steps permitted. Output the minimum number of steps to get n ‘A’.
QUICK EXPLANATION:
This problem can be solved using the prime factorisation concept in Math.
EXPLANATION:
We can break our moves into groups of (copy, paste, ..., paste) . Let C denote copying and P denote pasting. Then for example, in the sequence of moves CPPCPPPPCP , the groups would be [CPP][CPPPP][CP] .
Say these groups have lengths g_1, g_2, ... . After parsing the first group, there are g_1 'A' s. After parsing the second group, there are g_1 * g_2 'A' s, and so on. At the end, there are g_1 * g_2 * ... * g_n 'A' s.
We want exactly N = g_1 * g_2 * ... * g_n . If any of the g_i are composite, say g_i = p * q , then we can split this group into two groups (the first of which has one copy followed by p-1 pastes, while the second group having one copy and q-1 pastes).
Such a split never uses more moves: we use p+q moves when splitting, and pq moves previously. As p+q <= pq is equivalent to 1 <= (p-1)(q-1) , which is true as long as p >= 2 and q >= 2 .
Algorithm By the above argument, we can suppose g_1, g_2, ... is the prime factorization of N , and the answer is therefore the sum of these prime factors.
SOLUTIONS:
Setter's Solution
def minSteps(n):
answer = 0
d = 2
while n > 1:
while n % d == 0:
answer += d
n /= d
d += 1
return answer