Write an (efficient!) Python program that, given a stick of integer length N, breaks it up into smaller
sticks of integer but all un-equal lengths. For example: For N = 10, one possibility is (1,2,3,4). However
(1,1,1,3,4) is not valid due to the repeated 1s.
How many unique ways are there to break up the stick of length N? Please note that permutations of a
break-up are not to be counted, i.e., you are to count, (1,2,3,4) and (2,1,3,4) as a single breakup.
Plot the performance of your program scale with N? For this, run your program multiple times and take
the minimum time taken for a given value of N for the plot. You can use the value range of N =
10,20,40,80, 100, 200, 400, 800, 1000, 2000, 4000, 8000, 10000 and so on.
What are the Big-O time and space complexities of your algorithm?
Challenge for BONUS Marks: Write a Python program that, given a square with side length N breaks it
into squares of integer but all unequal lengths
Answers
Answered by
3
Python is an interpreted, high-level and general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant whitespace. Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.
Similar questions
Math,
3 months ago
Computer Science,
3 months ago
Physics,
3 months ago
CBSE BOARD X,
6 months ago
Science,
6 months ago
English,
11 months ago
English,
11 months ago