Problem Statement
Fox Ciel likes sequences of integers. She especially likes sequences that are either an arithmetic progression of integers or a geometric progression of integers with an integer common ratio. She calls these beautiful sequences. An arithmetic progression is a sequence of numbers such that the difference of any two consecutive numbers of the sequence is a constant. A geometric progression is a sequence of numbers where each number after the first is found by multiplying the previous one by a constant non-zero number which is called the common ratio.
Ciel has a sequence of integers. She says that an integer is good if she can obtain a beautiful sequence by appending the integer to the end of the sequence. You are given a
Definition
- Class:
- FoxProgression
- Method:
- theCount
- Parameters:
- int[]
- Returns:
- int
- Method signature:
- int theCount(int[] seq)
- (be sure your method is public)
Constraints
- seq will contain between 1 and 50 elements, inclusive.
- Each element of seq will be between 1 and 500, inclusive.
Examples
{1, 2, 4, 8}
Returns: 1
This sequence can become a geometric progression with ratio 2 if you append 16.
{5, 3, 1}
Returns: 1
This sequence can become an arithmetic progression with difference -2 if you append -1. Note that neither the difference/ratio nor the appended integer has to be strictly positive.
{1, 1}
Returns: 1
If you append 1, this sequence becomes a geometric progression (with ratio 1) and an arithmetic progression (with ratio 0) simultaneously. Despite the two reasons to call the resulted sequence "beautiful", there is still only one good integer.
{8, 4}
Returns: 1
This sequence can become an arithmetic progression if you append 0. It can also become a geometric progression with ratio 0.5 if you append 2, but progressions with non-integer ratio are not beautiful.
{1}
Returns: -1
Every integer is good for the given sequence.
{4, 8}
Returns: 2
There are two good integers: appending 12 turns this sequence into an arithmetic progression with difference 4, and appending 16 turns it into a geometric progression with ratio 2.
{1, 3, 4}
Returns: 0
This sequence is already neither an arithmetic nor a geometric progression, so nothing that you append can fix it.
{1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, 21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39,40, 41,42,43,44,45,46,47,48,49,50}
Returns: 1
{10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500}
Returns: 1
{1,500}
Returns: 2
{500,1}
Returns: 1
{1,2,4,8,16,32,64,128,256}
Returns: 1
{500}
Returns: -1
{500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500}
Returns: 1
{499,500}
Returns: 1
{2,1}
Returns: 1
{64,96,144,216,324,486}
Returns: 0
{4,6}
Returns: 1
{128,256}
Returns: 2
{500,499}
Returns: 1
{500,499,498,497,496,495,494,493,492,491,490,489,488,487,486,485,484,483,482,481,480,479,478,477,476,475,474,473,472,471,470,469,468,467,466,465,464,463,462,461,460,459,458,457,456,455,454,453,452,451}
Returns: 1
{500,499,498,497,496,495,494,493,492,491,490,489,488,487,486,485,484,483,482,481,480,479,478,477,476,475,474,473,472,471,470,468,468,467,466,465,464,463,462,461,460,459,458,457,456,455,454,453,452,451}
Returns: 0
{451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500}
Returns: 1
{451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,490,492,493,494,495,496,497,498,499,500}
Returns: 0
{1,1,2,2,3,3}
Returns: 0
{3,1,2}
Returns: 0
{1,2,3,1,2,3}
Returns: 0
{19,64,109}
Returns: 1
{77,111,145,179,213,247,281,315,349,383,417,451,485}
Returns: 1
{67,76,85,94,103,112,121,130,139,148,157,166,175,184,193,202,211,220,229,238,247,256,265,274,283,292,301,310,319,328,337,346,355,364,373,382,391,400,409,418,427,436,445}
Returns: 1
{7,25,43,61,79,97,115,133,151,169,187,205,223,241,259,277,295,313,331,349,367,385,403,421,439,457}
Returns: 1
{357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397}
Returns: 1
{178,196,214,232,250,268,286,304,322,340,358,376,394,412,430,448}
Returns: 1
{15,40,65,90,115,140,165,190,215,240,265,290,315,340,365,390,415,440,465,490}
Returns: 1
{446,446,446,446,446,446,446,446,446,446,190,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446}
Returns: 0
{466,107,324,485,190,152,48,315,375,31,120,381,187,274,33,239,361,47,313,336,167,193,310,272,391,214,193,85,475,306,216,340,342,246,300,430,191,386,70,302,303,154,378,167}
Returns: 0
{22,40,58,76,94,112,130,148,166,184,202,220,238,256,274,292,310,328,346,364,382,400,418,436,454,472,490}
Returns: 1
{7,41,43,52,57,57,60,65,70,73,83,89,100,134,140,150,164,184,185,186,190,195,225,256,260,270,271,275,311,333,359,373,383,423,439,445,481,484,495,498,500}
Returns: 0
{254,257,260,263,266,269,272,275,278,281,284,287,290,293,296,299,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,353,356,359}
Returns: 1
{314,314,314,314,314}
Returns: 1
{422,293,247,376,65,208,99,117,369,260,349,33,247,392,89,299,267,421,459,443,262,260,415,153,360,373,335,383,480,370,136,246,490,479,159,71,131,389,296,228,29,488,454,213}
Returns: 0
{300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300}
Returns: 1
{59,70,81,92,103,114,125,136,147,158,169,180,191,202,213,224,235,246,257,268,279,290,25,312,323,334,345,356,367,378,389,400,411,422,433}
Returns: 0
{92,256,420}
Returns: 1
{26,133}
Returns: 1
{3,6,12,24,48,96,192,384}
Returns: 1
{329}
Returns: -1
{32,96,484,187,63}
Returns: 0
{50,64,78,92,106,120,134,148,162,176,190,204,218,232,246,260,274,288,105,316,330,344,358,372,386,400,414,428,442,456,470,484,498}
Returns: 0
{159,168,177,186,195,204,213,222,231,240,249,258,267,276,285,294,303,312,321,330,339,348,357,366,375,384,393,402,411,420}
Returns: 1
{39,56,73,90,107,124,141,158,175,192,209,226,243,260,277,294,311,328,345,362,379,396,413,430,447,464,481,498}
Returns: 1
{20,31,54,61,110,147,141,158,202,209,239,261,265,285,293,296,297,308,327,334,338,355,420,425,437,445,446,499}
Returns: 0
{76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176}
Returns: 1
{22,41,60,79,98,117,136,155,174,193,212,231,250,269,288}
Returns: 1
{70,70,70,70,70,480,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70}
Returns: 0
{2,4,8,16,32,64,128}
Returns: 1
{243,245,247,249,251,253,255,257,259,261,263,265,267,269,271,273,275,277,279,281,283,285,287,289,291}
Returns: 1
{4,8,16,32,64,128,256}
Returns: 1
{1,22,484}
Returns: 1
{2,30,450}
Returns: 1
{10,490}
Returns: 2
{362,321,325,158,24,135,102,22,95,153,197,491,2,440,82,114,113,165,195,214,283,307,367,12,32,362,416,277,373,409,187,199,222,381,483,42,112,50,149,226}
Returns: 0
{65,135,205,275,345,415,485}
Returns: 1
{456,456,456,186,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456}
Returns: 0
{105,113,121,129,137,145,153,161,169,177,185,193,201,209,217,225,233,241,249,257,265,273,281,289,297,305,313,321,329,337,345}
Returns: 1
{37,47,57,67,77,87,97,107,117,127,137,147,157,167,177,187,197,207,217,227,237,247,257,267,277,287,297,307,317,327,337,347,357,367,377,387,397,407,417,427}
Returns: 1
{58}
Returns: -1
{8, 8, 7 }
Returns: 0
{2, 4 }
Returns: 2
{5, 3, 1 }
Returns: 1
{2, 3 }
Returns: 1
{1, 1 }
Returns: 1
{4, 7 }
Returns: 1
{27, 9, 3 }
Returns: 0
{3 }
Returns: -1
{5, 1, 3 }
Returns: 0
{8, 4 }
Returns: 1
{1, 1, 1 }
Returns: 1
{1, 2, 4, 8, 15, 115 }
Returns: 0
{2, 4, 8, 17 }
Returns: 0
{1, 1, 2 }
Returns: 0
{2 }
Returns: -1
{1, 2, 5 }
Returns: 0
{3, 10 }
Returns: 1
{1, 2, 4, 8, 15 }
Returns: 0
{1, 2, 3, 4, 6 }
Returns: 0
{1, 3, 9, 28 }
Returns: 0
{3, 3, 3, 1 }
Returns: 0
{1, 2, 4, 10 }
Returns: 0
{4, 6, 7 }
Returns: 0
{4, 4 }
Returns: 1
{2, 5 }
Returns: 1
{3, 6, 13 }
Returns: 0
{3, 4, 7 }
Returns: 0
{1, 2 }
Returns: 2
{1, 1, 1, 1, 2, 4, 8 }
Returns: 0
{1 }
Returns: -1
{8, 8, 8, 8, 8 }
Returns: 1
{9, 6, 4 }
Returns: 0
{10, 10, 10, 10, 10, 10 }
Returns: 1
{2, 3, 5 }
Returns: 0
{5, 11 }
Returns: 1
{1, 1, 1, 2, 4, 8, 16 }
Returns: 0
{2, 6, 19 }
Returns: 0
{5, 7 }
Returns: 1
{3, 1 }
Returns: 1
{1, 2, 4, 2 }
Returns: 0
{1, 2, 3, 4, 5, 10 }
Returns: 0
{5 }
Returns: -1
{4, 9, 18, 36 }
Returns: 0
{3, 1, 3, 5 }
Returns: 0
{5, 6 }
Returns: 1
{2, 5, 2 }
Returns: 0
{1, 1, 1, 1, 1 }
Returns: 1
{2, 5, 11, 23 }
Returns: 0
{1, 1, 1, 1 }
Returns: 1
{1, 2, 3, 5 }
Returns: 0
{1, 2, 6 }
Returns: 0
{1, 1, 1, 1, 1, 1 }
Returns: 1
{8, 12 }
Returns: 1
{8, 4, 2 }
Returns: 0
{100, 1 }
Returns: 1
{4, 10 }
Returns: 1
{1, 2, 4, 8, 467 }
Returns: 0
{5, 3, 2 }
Returns: 0
{1, 1, 100 }
Returns: 0
{3, 3 }
Returns: 1
{3, 2 }
Returns: 1
{100, 10 }
Returns: 1
{6, 15 }
Returns: 1
{1, 2, 3, 6 }
Returns: 0
{4, 10, 25 }
Returns: 0
{1, 3, 5, 7 }
Returns: 1
{2, 4, 16, 18 }
Returns: 0
{12, 30, 75 }
Returns: 0
{1, 2, 4, 8, 17 }
Returns: 0
{2, 2 }
Returns: 1
{1, 3 }
Returns: 2
{3, 7, 16 }
Returns: 0
{2, 2, 2 }
Returns: 1
{2, 5, 10 }
Returns: 0
{27, 9 }
Returns: 1
{2, 1, 1 }
Returns: 0
{1, 3, 9, 27 }
Returns: 1
{5, 8 }
Returns: 1
{2, 4, 9 }
Returns: 0
{5, 10, 20, 40, 81 }
Returns: 0