n1 = d1*q1+r1
n2 = d1Xq2+r1
n3 = d1Xq3+r1
要找出d1出來
a1= n1-n2 = d1X(q1-q2)
a2 = n1-n3 = d1X(q1-q3)
只要找出a1跟a2的最大公因數即可求出
如果只有兩個呢?
a1 = (n1-n2)X1 = d1X(q1-q2)
那麼n1-n2自然就是最大的那一個答案了。
int gcd(int a,int b){
return b == 0?a:gcd(b,a%b);
}
int main(int argc, char const* argv[])
{
string line;
while(getline(cin,line) && line[0] != '0'){
istringstream stream(line);
int n;
vector<int> p;
stream>>n;
int a = n;
while(stream>>n && n != 0){
p.push_back(abs((n-a)));
}
int l = p.size();
int ans = 0;
if(l > 1){
for(int i = 0;i <l;i++){
ans = gcd(p[i],ans);
}
}
else{
ans = gcd(0,p[0]);
}
printf("%d\n",ans);
}
return 0;
}