COCI 2007/2008, Contest #6
Luka started driving international routes with his truck. His biggest problem is the border with Slovenia. The border is a point of entrance into the European Union, so every truck is thoroughly examined. Because of this, Luka always has to wait several hours there. To kill the time, he comes up with various logic and math games.
In one of them, Luka first reads the numbers off of N license plates and writes them down on a piece of paper. Then he tries to find an integer M greater than 1 such that all integers on the paper give the same remainder when divided by M. Luka tries to find as many such integers M as possible.
Write a program that, given Luka's N integers, determines all such integers M.
The first line contains the integer N (2 ≤ N ≤ 100), the number of integers on paper. Each of the following N lines contains one integer between 1 and 1 000 000 000 (one billion). All these integers will be distinct.
The input data will guarantee that at least one integer M will always exist.
Output all integers M separated by spaces, in any order.
In test cases worth 60% points, each of the N numbers will be at most 10 000.
3 6 34 38
5 5 17 23 14 83
In the first example, all integers give a remainder of 0 when divided by 2 and the remainder 2 when divided by 4.
Point Value: 10 (partial)
Time Limit: 1.00s
Memory Limit: 32M
Added: Aug 03, 2013
C++03, PAS, C, HASK, ASM, RUBY, PYTH2, JAVA, PHP, SCM, CAML, PERL, C#, C++11, PYTH3