Problem: 440. Eeny Meeny Moo
Solution of the Problem
Description: Flavius Josephus was a famous historian of the first century. Legend has it that Josephus wouldn't have lived to become famous without his mathematical talents. During the Jewish-Roman war, he was among a band of 41 Jewish rebels trapped in cave by the Romans. Preferring suicide to capture, the rebels decided to form a circle and, proceeding around it, to kill every third remaining person until no one was left. But Josephus, along with an unindicted co-conspirator, wanted none of this suicide nonsense; so he quickly calculated where he and his friend stand in the vicious circle.
Algorithm:
1. Given A Circular queue: 1,2,3,4,5,6,7,8,9,10,11,12,13,14
2.
3. i.e _,2,3,4,5,6,7,8,9,10,11,12,13,14
4. if difference =2 ,then next two element push into the back.
5. While(i!=diff) it pop()data from front and then push it back.ie, _,_,_,4,5,6,7,8,9,10,11,12,13,14,2,3. Now front is on 4 data and rear is on 3 data. Element decrease by 2(i.e 12). Now Follow above step until number element 1;
6. 7,8,9,10,11,12,13,14,2,3,5,6 [4 die]
7. 10,11,12,13,14,2,3,5,6,8,9 [7 die]
8. 13,14,2,3,5,6,8,9,11,12 [10 die]
9. 3,5,6,8,9,11,12,14,2 [13 die]
10. 8,9,11,12,14,2,5,6 [3 die]
11. 12,14,2,5,6,9,11 [8 die]
12. 5,6,9,11,14,2 [12 die]
13. 11,14,2,6,9 [5 die]
14. 6,9,14,2 [11 die]
15. 2,9,14 [6 die]
16. 9,14 [2 die]
17. 14 [9 die]
Code in C/C++:
Solution of the Problem
Description: Flavius Josephus was a famous historian of the first century. Legend has it that Josephus wouldn't have lived to become famous without his mathematical talents. During the Jewish-Roman war, he was among a band of 41 Jewish rebels trapped in cave by the Romans. Preferring suicide to capture, the rebels decided to form a circle and, proceeding around it, to kill every third remaining person until no one was left. But Josephus, along with an unindicted co-conspirator, wanted none of this suicide nonsense; so he quickly calculated where he and his friend stand in the vicious circle.
Algorithm:
1. Given A Circular queue: 1,2,3,4,5,6,7,8,9,10,11,12,13,14
2.
3. i.e _,2,3,4,5,6,7,8,9,10,11,12,13,14
4. if difference =2 ,then next two element push into the back.
5. While(i!=diff) it pop()data from front and then push it back.ie, _,_,_,4,5,6,7,8,9,10,11,12,13,14,2,3. Now front is on 4 data and rear is on 3 data. Element decrease by 2(i.e 12). Now Follow above step until number element 1;
6. 7,8,9,10,11,12,13,14,2,3,5,6 [4 die]
7. 10,11,12,13,14,2,3,5,6,8,9 [7 die]
8. 13,14,2,3,5,6,8,9,11,12 [10 die]
9. 3,5,6,8,9,11,12,14,2 [13 die]
10. 8,9,11,12,14,2,5,6 [3 die]
11. 12,14,2,5,6,9,11 [8 die]
12. 5,6,9,11,14,2 [12 die]
13. 11,14,2,6,9 [5 die]
14. 6,9,14,2 [11 die]
15. 2,9,14 [6 die]
16. 9,14 [2 die]
17. 14 [9 die]
Code in C/C++:
No comments:
Post a Comment