国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 安化县| 松滋市| 同德县| 旅游| 临湘市| 晋江市| 河北省| 南木林县| 宜州市| 台北市| 任丘市| 太仓市| 万山特区| 晋城| 安西县| 什邡市| 应城市| 陈巴尔虎旗| 诏安县| 宁明县| 汾阳市| 裕民县| 广河县| 高安市| 同心县| 无锡市| 雷波县| 绥德县| 阿瓦提县| 垣曲县| 靖远县| 聊城市| 无棣县| 沧源| 新巴尔虎左旗| 兴安盟| 阜康市| 青海省| 濮阳县| 错那县| 曲麻莱县|