WUST OJ 1966: 整数转换

来源:互联网 发布:linux查看目录权限 编辑:程序博客网 时间:2024/04/30 21:20

1966: 整数转换

Time Limit: 1 Sec  Memory Limit: 128 MB  64bit IO Format: %lld

Description

有N个正整数a[1]...a[N],你可以选择一个正整数X,然后以后每一步,你可以使一个数a[i]变成 a[i] + X,或者 a[i] - X。
聪明的你,一定会知道怎么选择这个X,使得最后所有的数都变成相等,而且使用的变化步数最少。

Input

多组测试数据。
对于每组数据,一个N,接下来一行有N个数a[1]...a[N] (1<= a[i] <= 10^6)>。保证这N个数不全相等。

N<=1000

Output


每组数据单独一行,你找出的正整数X,以及最少步数,两个数用一个空格隔开。

Sample Input 

3

1 2 3

4

3 5 7 11


Sample Output

1 2

2 5

#include<iostream>#include<algorithm>using namespace std;int gcd(int a,int b){return b==0?a:gcd(b,a%b);}int main(){    int n,a[1000];    while(cin>>n)    {        int x=0,QWQ=0;        for(int i=0;i<n;i++)cin>>a[i];        sort(a,a+n);        for(int i=1;i<n;i++)x=gcd(a[i]-a[i-1],x);        for(int i=n/2,j=(n-1)/2;i<n&&j>=0;j--,i++)QWQ+=(a[i]-a[j])/x;        printf("%d %d\n",x,QWQ);    }    return 0;}


原创粉丝点击