国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

1011整數(shù)轉(zhuǎn)換

2019-11-08 02:07:19
字體:
供稿:網(wǎng)友

Description

有N個正整數(shù)a[1]...a[N],你可以選擇一個正整數(shù)X,然后以后每一步,你可以使一個數(shù)a[i]變成 a[i] + X,或者 a[i] - X。聰明的你,一定會知道怎么選擇這個X,使得最后所有的數(shù)都變成相等,而且使用的變化步數(shù)最少。

Input

多組測試數(shù)據(jù)。對于每組數(shù)據(jù),一個N,接下來一行有N個數(shù)a[1]...a[N] (1<= a[i] <= 10^6)>。保證這N個數(shù)不全相等。

N<=1000

Output

每組數(shù)據(jù)單獨一行,你找出的正整數(shù)X,以及最少步數(shù),兩個數(shù)用一個空格隔開。

Sample Input 

31 2 343 5 7 11

Sample Output

1 22 5

分析:首先要選擇一個適當(dāng)?shù)膞,這個x保證要是的a[i]通過數(shù)次的加或者減x,數(shù)組a所有的數(shù)都相等,且希望x是滿足此條件的最大(保證轉(zhuǎn)換的步數(shù)最小)。

參考代碼:

#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<string>#include<algorithm>#include<stack>#include<queue>#include<vector>#include<map>using namespace std;const int inf = 0x3f3f3f3f;const int maxn = 10000+10;int n;int a[maxn];int gcd( int a, int b){    if( !b)        return a;    return gcd(b,a%b);}int main(){    while( ~scanf("%d",&n))    {        int s = 0;        for( int i = 1; i <= n; i++)            scanf("%d",&a[i]);        sort( a+1,a+1+n);        int x = 0;        for( int i = 2; i <= n; i++)            x= gcd( x,a[i]-a[i-1]);        int mid = (n+1)/2;        long long ans = 0;        for( int i = 1; i <= n; i++)            ans = ans+abs(a[mid]-a[i])/x;        //for( int i = mid+1; i <= n; i++)          //  ans = ans+(a[i]-a[mid])/x;        PRintf("%d %lld/n",x,ans);    }    return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 北碚区| 五华县| 商丘市| 武陟县| 北票市| 平邑县| 九江县| 芮城县| 饶平县| 凉山| 甘孜县| 南京市| 大余县| 正安县| 巴南区| 舟山市| 娱乐| 民乐县| 云林县| 和静县| 阜南县| 鹿泉市| 陕西省| 汝州市| 永寿县| 三江| 无锡市| 金乡县| 青神县| 建水县| 柳林县| 上虞市| 芮城县| 格尔木市| 伊通| 广德县| 宜宾市| 同心县| 新竹县| 永宁县| 平原县|