Problem Statement
You managed to achieve one of the main goals of alchemists: the transmutation of lead into gold. More precisely, you have discovered a collection of experiments. Each experiment starts with exactly one lead coin and ends with some (possibly zero) lead coins and some (possibly zero) gold coins. You may perform each experiment arbitrarily many times, as long as you have at least one lead coin to start with.
You are given the
Definition
- Class:
- Alchemy
- Method:
- leadToGold
- Parameters:
- int[], int[], long
- Returns:
- String
- Method signature:
- String leadToGold(int[] leadOutput, int[] goldOutput, long goal)
- (be sure your method is public)
Constraints
- leadOutput will contain between 1 and 50 elements, inclusive.
- goldOutput will contain the same number of elements as leadOutput.
- Each element of leadOutput and goldOutput will be between 0 and 100, inclusive.
- goal will be between 0 and 10^18, inclusive.
Examples
{1,1,1}
{0,1,2}
47
Returns: "Impossible"
Reaching the goal is impossible because we cannot get completely rid of lead.
{4,0}
{1,3}
23
Returns: "Possible"
One possible sequence of actions: Perform experiment 0. We now have 4 lead coins and 1 gold coin. Perform experiment 0 again. This consumes one of the 4 lead coins and then produces 4 new lead coins and 1 new gold coin. Thus, we now have a total of 7 lead coins and 2 gold coins. Seven times perform experiment 1, each time turning one of the lead coins into three gold coins.
{0}
{0}
0
Returns: "Possible"
{0}
{0}
1
Returns: "Impossible"
{1}
{0}
0
Returns: "Impossible"
{2,3,4,0}
{0,0,0,0}
0
Returns: "Possible"
{2,3,4,5,6,0}
{0,0,10,20,47,0}
9
Returns: "Impossible"
{2,3,4,5,6,0}
{0,0,10,20,47,0}
104
Returns: "Possible"
{0,100,100}
{100,100,99}
99970101
Returns: "Impossible"
{0,100,100}
{100,100,98}
999999999999999999
Returns: "Impossible"
{3,0,0}
{0,5,7}
9876543210
Returns: "Impossible"
We have three experiments that turn one lead coin into 3 lead coins, 5 gold coins, and 7 gold coins, respectively. Quite obviously we won't be able to end with 9,876,543,210 gold coins, as the total number of coins remains odd after each experiment.
{3,0,0}
{0,5,7}
123456789
Returns: "Possible"
On the other hand, we can easily turn the initial one lead coin into 123,456,789 gold coins.
{3,2,1,0,7,0,1}
{5,15,4,9,0,7,0}
1234567
Returns: "Possible"
{3,2,1,0,7,0,1}
{5,15,4,9,0,7,0}
24
Returns: "Impossible"
{100, 98, 96, 94, 92, 90, 88, 86, 84, 82, 80, 78, 76, 74, 72, 70, 68, 66, 64, 62, 60, 59, 58, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
{100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76}
4355
Returns: "Impossible"
{1,0}
{0,47}
47
Returns: "Possible"
{1,0}
{0,47}
94
Returns: "Impossible"
{1,0}
{0,47}
0
Returns: "Impossible"
{ 90, 4, 0 }
{ 9, 75, 30 }
999999999998350100
Returns: "Impossible"
{ 90, 4, 0 }
{ 9, 75, 30 }
999999999998350176
Returns: "Possible"
{ 9, 0 }
{ 38, 54 }
999999999995300100
Returns: "Impossible"
{ 9, 0 }
{ 38, 54 }
999999999995300141
Returns: "Impossible"
{ 23, 0 }
{ 35, 89 }
999999999980070100
Returns: "Impossible"
{ 23, 0 }
{ 35, 89 }
999999999980070149
Returns: "Impossible"
{ 83, 62, 0 }
{ 96, 87, 31 }
999999999980220098
Returns: "Impossible"
{ 83, 62, 0 }
{ 96, 87, 31 }
999999999980220192
Returns: "Impossible"
{ 75, 99, 0 }
{ 7, 4, 95 }
65526362
Returns: "Impossible"
{ 75, 99, 0 }
{ 7, 4, 95 }
65526444
Returns: "Possible"
{ 65, 0, 84, 70 }
{ 62, 35, 65, 38 }
258664
Returns: "Impossible"
{ 65, 0, 84, 70 }
{ 62, 35, 65, 38 }
258725
Returns: "Possible"
{ 57, 0, 89 }
{ 67, 82, 80 }
999999999953410100
Returns: "Impossible"
{ 57, 0, 89 }
{ 67, 82, 80 }
999999999953410192
Returns: "Possible"
{ 97, 0, 69 }
{ 36, 71, 54 }
999999999951180098
Returns: "Impossible"
{ 97, 0, 69 }
{ 36, 71, 54 }
999999999951180152
Returns: "Impossible"
{ 54, 0, 84 }
{ 22, 76, 76 }
999999999959500100
Returns: "Impossible"
{ 54, 0, 84 }
{ 22, 76, 76 }
999999999959500115
Returns: "Impossible"
{ 63, 73, 0 }
{ 0, 1, 11 }
539362
Returns: "Impossible"
{ 63, 73, 0 }
{ 0, 1, 11 }
539372
Returns: "Possible"
{ 0, 95, 65 }
{ 27, 43, 69 }
4633706
Returns: "Impossible"
{ 0, 95, 65 }
{ 27, 43, 69 }
4633721
Returns: "Possible"
{ 79, 0, 53, 95, 83, 68, 97 }
{ 69, 45, 64, 90, 83, 33, 40 }
55630
Returns: "Impossible"
{ 79, 0, 53, 95, 83, 68, 97 }
{ 69, 45, 64, 90, 83, 33, 40 }
55688
Returns: "Possible"
{ 59, 59, 73, 67, 83, 0, 58, 90, 71, 55, 57, 73, 86, 53, 0, 0, 95 }
{ 37, 92, 22, 70, 89, 12, 32, 13, 8, 43, 2, 62, 72, 53, 70, 35, 33 }
995
Returns: "Impossible"
{ 59, 59, 73, 67, 83, 0, 58, 90, 71, 55, 57, 73, 86, 53, 0, 0, 95 }
{ 37, 92, 22, 70, 89, 12, 32, 13, 8, 43, 2, 62, 72, 53, 70, 35, 33 }
1016
Returns: "Possible"
{ 73, 78, 0 }
{ 52, 59, 55 }
999999999959880098
Returns: "Impossible"
{ 73, 78, 0 }
{ 52, 59, 55 }
999999999959880099
Returns: "Possible"
{ 70, 0, 55, 86, 90, 0, 52 }
{ 41, 27, 21, 29, 26, 11, 32 }
2167
Returns: "Impossible"
{ 70, 0, 55, 86, 90, 0, 52 }
{ 41, 27, 21, 29, 26, 11, 32 }
2224
Returns: "Possible"
{ 51, 82, 51, 63, 78, 56, 50, 61, 79, 56, 98, 78, 59, 0, 90, 74, 0, 90, 68, 0, 85, 0, 91, 55, 0, 76, 70, 0, 81, 71, 96, 64, 58, 73, 60, 75, 98, 0, 72, 0, 55, 98, 0, 56, 0, 0, 77 }
{ 56, 83, 35, 97, 89, 25, 99, 36, 8, 68, 87, 91, 74, 87, 47, 55, 75, 57, 73, 74, 78, 36, 52, 81, 33, 6, 91, 81, 16, 96, 99, 99, 86, 15, 7, 52, 19, 94, 27, 64, 22, 79, 32, 44, 93, 44, 88 }
1666
Returns: "Impossible"
{ 51, 82, 51, 63, 78, 56, 50, 61, 79, 56, 98, 78, 59, 0, 90, 74, 0, 90, 68, 0, 85, 0, 91, 55, 0, 76, 70, 0, 81, 71, 96, 64, 58, 73, 60, 75, 98, 0, 72, 0, 55, 98, 0, 56, 0, 0, 77 }
{ 56, 83, 35, 97, 89, 25, 99, 36, 8, 68, 87, 91, 74, 87, 47, 55, 75, 57, 73, 74, 78, 36, 52, 81, 33, 6, 91, 81, 16, 96, 99, 99, 86, 15, 7, 52, 19, 94, 27, 64, 22, 79, 32, 44, 93, 44, 88 }
1682
Returns: "Possible"
{ 65, 80, 98, 94, 59, 0, 0 }
{ 35, 54, 32, 18, 79, 91, 38 }
15575
Returns: "Impossible"
{ 65, 80, 98, 94, 59, 0, 0 }
{ 35, 54, 32, 18, 79, 91, 38 }
15659
Returns: "Possible"
{ 51, 0, 86 }
{ 9, 1, 55 }
8062
Returns: "Impossible"
{ 51, 0, 86 }
{ 9, 1, 55 }
8127
Returns: "Possible"
{ 61, 0, 19, 0, 50, 0, 89, 0, 31, 0, 3, 0, 92, 0, 57, 0, 5, 0, 15, 0, 50, 0, 34, 0, 17, 0, 87 }
{ 80, 30, 30, 35, 100, 30, 90, 15, 15, 45, 70, 85, 10, 5, 10, 50, 55, 65, 45, 0, 65, 25, 70, 15, 10, 70, 75 }
999999999999999993
Returns: "Impossible"
{ 61, 0, 19, 0, 50, 0, 89, 0, 31, 0, 3, 0, 92, 0, 57, 0, 5, 0, 15, 0, 50, 0, 34, 0, 17, 0, 87 }
{ 80, 30, 30, 35, 100, 30, 90, 15, 15, 45, 70, 85, 10, 5, 10, 50, 55, 65, 45, 0, 65, 25, 70, 15, 10, 70, 75 }
999999999999999840
Returns: "Possible"
{ 15, 0 }
{ 60, 96 }
999999999999999992
Returns: "Impossible"
{ 15, 0 }
{ 60, 96 }
999999999999999954
Returns: "Impossible"
{ 4, 0, 26 }
{ 98, 49, 84 }
999999999999999993
Returns: "Impossible"
{ 4, 0, 26 }
{ 98, 49, 84 }
999999999999999950
Returns: "Possible"
{ 100 }
{ 57 }
999999999999999996
Returns: "Impossible"
{ 100 }
{ 57 }
999999999999999952
Returns: "Impossible"
{ 29, 0, 66, 0 }
{ 36, 75, 75, 3 }
999999999999999989
Returns: "Impossible"
{ 29, 0, 66, 0 }
{ 36, 75, 75, 3 }
999999999999999987
Returns: "Possible"
{ 48, 0, 73 }
{ 60, 86, 45 }
999999999999999982
Returns: "Impossible"
{ 48, 0, 73 }
{ 60, 86, 45 }
999999999999999812
Returns: "Possible"
{ 51, 0, 2, 0 }
{ 10, 1, 49, 11 }
999999999999999982
Returns: "Impossible"
{ 51, 0, 2, 0 }
{ 10, 1, 49, 11 }
999999999999999981
Returns: "Possible"
{ 70, 0, 86, 0, 89, 0, 98, 0, 5, 0, 20, 0, 81, 0, 23, 0, 48, 0, 26, 0, 33, 0, 77, 0, 68, 0, 19, 0, 86, 0, 64, 0, 58, 0, 46, 0, 93, 0, 95, 0, 70, 0, 34, 0, 25, 0, 64 }
{ 80, 66, 38, 16, 14, 64, 64, 96, 4, 10, 70, 88, 16, 64, 96, 44, 72, 82, 44, 60, 42, 54, 0, 50, 24, 30, 92, 68, 8, 98, 18, 58, 68, 76, 10, 76, 78, 80, 32, 14, 90, 42, 28, 38, 84, 82, 18 }
999999999999999993
Returns: "Impossible"
{ 70, 0, 86, 0, 89, 0, 98, 0, 5, 0, 20, 0, 81, 0, 23, 0, 48, 0, 26, 0, 33, 0, 77, 0, 68, 0, 19, 0, 86, 0, 64, 0, 58, 0, 46, 0, 93, 0, 95, 0, 70, 0, 34, 0, 25, 0, 64 }
{ 80, 66, 38, 16, 14, 64, 64, 96, 4, 10, 70, 88, 16, 64, 96, 44, 72, 82, 44, 60, 42, 54, 0, 50, 24, 30, 92, 68, 8, 98, 18, 58, 68, 76, 10, 76, 78, 80, 32, 14, 90, 42, 28, 38, 84, 82, 18 }
999999999999999966
Returns: "Possible"
{ 61, 0, 70, 0, 43, 0, 28, 0, 57, 0, 17, 0, 41, 0, 98, 0, 55, 0, 96, 0, 9, 0, 20, 0, 21, 0, 85, 0, 6, 0, 2, 0, 23, 0, 99, 0, 29, 0, 96, 0, 24, 0, 13, 0, 96, 0, 84, 0, 45, 0 }
{ 90, 60, 24, 96, 54, 42, 84, 24, 54, 96, 36, 36, 42, 54, 66, 78, 78, 12, 0, 96, 48, 60, 72, 42, 96, 48, 60, 66, 60, 90, 84, 78, 18, 42, 12, 6, 54, 36, 90, 6, 0, 54, 54, 18, 78, 12, 96, 30, 48, 84 }
999999999999999975
Returns: "Impossible"
{ 61, 0, 70, 0, 43, 0, 28, 0, 57, 0, 17, 0, 41, 0, 98, 0, 55, 0, 96, 0, 9, 0, 20, 0, 21, 0, 85, 0, 6, 0, 2, 0, 23, 0, 99, 0, 29, 0, 96, 0, 24, 0, 13, 0, 96, 0, 84, 0, 45, 0 }
{ 90, 60, 24, 96, 54, 42, 84, 24, 54, 96, 36, 36, 42, 54, 66, 78, 78, 12, 0, 96, 48, 60, 72, 42, 96, 48, 60, 66, 60, 90, 84, 78, 18, 42, 12, 6, 54, 36, 90, 6, 0, 54, 54, 18, 78, 12, 96, 30, 48, 84 }
999999999999999966
Returns: "Possible"
{ 99, 0 }
{ 4, 14 }
999999999999999964
Returns: "Impossible"
{ 99, 0 }
{ 4, 14 }
999999999999999950
Returns: "Impossible"
{ 58, 0, 29, 0, 22, 0, 54, 0, 32, 0, 70, 0, 66, 0, 79, 0, 5, 0, 49, 0, 89, 0, 75, 0, 15, 0, 69 }
{ 31, 67, 29, 12, 98, 47, 34, 97, 23, 47, 57, 82, 0, 67, 49, 72, 52, 47, 89, 62, 74, 12, 52, 2, 72, 82, 89 }
999999999999999983
Returns: "Impossible"
{ 58, 0, 29, 0, 22, 0, 54, 0, 32, 0, 70, 0, 66, 0, 79, 0, 5, 0, 49, 0, 89, 0, 75, 0, 15, 0, 69 }
{ 31, 67, 29, 12, 98, 47, 34, 97, 23, 47, 57, 82, 0, 67, 49, 72, 52, 47, 89, 62, 74, 12, 52, 2, 72, 82, 89 }
999999999999999957
Returns: "Possible"
{ 92, 0, 5, 0, 77, 0, 4 }
{ 84, 47, 36, 68, 96, 12, 6 }
999999999999999989
Returns: "Impossible"
{ 92, 0, 5, 0, 77, 0, 4 }
{ 84, 47, 36, 68, 96, 12, 6 }
999999999999999934
Returns: "Possible"
{ 29, 0, 60, 0 }
{ 28, 94, 58, 90 }
999999999999999987
Returns: "Impossible"
{ 29, 0, 60, 0 }
{ 28, 94, 58, 90 }
999999999999999958
Returns: "Possible"
{ 46 }
{ 35 }
999999999999999984
Returns: "Impossible"
{ 46 }
{ 35 }
999999999999999937
Returns: "Impossible"
{ 38, 0, 79 }
{ 1, 47, 6 }
999999999999999985
Returns: "Impossible"
{ 38, 0, 79 }
{ 1, 47, 6 }
999999999999999943
Returns: "Impossible"
{ 20, 0, 34, 0, 64, 0, 72, 0, 42, 0, 49, 0, 8, 0, 25, 0, 88, 0, 35, 0, 16, 0, 17, 0, 94, 0, 19 }
{ 73, 91, 19, 65, 25, 9, 53, 49, 97, 77, 44, 53, 35, 89, 26, 23, 1, 61, 4, 31, 65, 93, 8, 11, 65, 93, 64 }
999999999999999982
Returns: "Impossible"
{ 20, 0, 34, 0, 64, 0, 72, 0, 42, 0, 49, 0, 8, 0, 25, 0, 88, 0, 35, 0, 16, 0, 17, 0, 94, 0, 19 }
{ 73, 91, 19, 65, 25, 9, 53, 49, 97, 77, 44, 53, 35, 89, 26, 23, 1, 61, 4, 31, 65, 93, 8, 11, 65, 93, 64 }
999999999999999977
Returns: "Possible"
{ 76, 0 }
{ 19, 83 }
999999999999999988
Returns: "Impossible"
{ 76, 0 }
{ 19, 83 }
999999999999999971
Returns: "Impossible"
{ 17, 0 }
{ 40, 47 }
999999999999999985
Returns: "Impossible"
{ 17, 0 }
{ 40, 47 }
999999999999999963
Returns: "Impossible"
{ 77, 0, 57, 0, 28, 0, 15 }
{ 30, 80, 100, 75, 60, 0, 100 }
999999999999999994
Returns: "Impossible"
{ 77, 0, 57, 0, 28, 0, 15 }
{ 30, 80, 100, 75, 60, 0, 100 }
999999999999999990
Returns: "Possible"
{ 45 }
{ 12 }
999999999999999988
Returns: "Impossible"
{ 45 }
{ 12 }
999999999999999922
Returns: "Impossible"
{0 }
{0 }
0
Returns: "Possible"
{1 }
{1 }
0
Returns: "Impossible"
{0, 1, 1 }
{0, 100, 99 }
50
Returns: "Impossible"
{1, 0 }
{0, 1 }
1
Returns: "Possible"
{100, 0, 0 }
{100, 99, 100 }
9901000099009
Returns: "Possible"