Minimum number of weights - PrismoSkills



Minimum number of weights - PrismoSkills

  • Choose a minimum number of weights to be able to measure all weights between 1-40 kg.

------------------------------------------------------------------------------------

Soln: To be able to measure 1 kg, one weight of 1 kg is a must.

To be able to measure 40 kg, sum of all weights chosen must be 40 kg.

We can choose 40 weights each of 1 kg.

This will enable us to measure all weights between 1 to 40 kg.

So, there at least is a solution - 40 weights each of 1 kg.


Optimization: Now, this can be optimised by binary method.

If we have one weight of 20 kg and 20 weights of 1 kg, we can still measure all values.

=> number of weights required is 1 + 20 = 21


The 20 weights of 1 kg are used both above and below 20 kg and their range can again be halved.

We can have 1 weight of 20 kg as before and 1 weight of 10 kg and 10 weights of 1 kg.

=> no. of weights required = 1 + 1 + 10 = 12


Half again the number of 1 kg weights

=> no. of weights required = 1 + 1 + 1 + 5 = 8


Again half

=> no. of weights required = 1 + 1 + 1 + 1 + 2 = 6


Thus, 6 weights are needed having weights 20, 10, 5, 3, 1, 1


Now, let us generalize the solution:

If weight range is 1-N, then weights required are:

N/2, N/4, N/8 ... 1, 1 (This last one weight helps to reach 2k from k)

=> Number of weights required are: logN + 1


Better Solution: The above solution does not take into account that the weights can be used as negative weights also. So, the weights need not be kept only on side of the balance, they can be kept on the other side of the balance too to increase the weight of the object.


Read full article from Minimum number of weights - PrismoSkills


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts