1. 程式人生 > >Codeforces Round #228 (Div. 2), problem: (A) Fox and Number Game

Codeforces Round #228 (Div. 2), problem: (A) Fox and Number Game

Note

In the first example the optimal way is to do the assignment: x2 = x2 - x1.

In the second example the optimal sequence of operations is: x3 = x3 - x2x2 = x2 - x1

意思很簡單,給出n個數,執行如下操作若干次:從中任取兩個數,滿足,然後賦值,直到所有數的和最小。

根據題目,得出如下思路,將給出的n個數從小到大排序,為了讓操作次數儘可能少,讓第n個減去第n-1個,再將得

出的新陣列排序,重複執行上述操作。可發現,當所有數都相等

時,操作結束,此時的和最小。

題目很簡單,但是演算的時候可以發現,這是在求n個數的最大公約數,所以特別將該題記錄下來。程式碼如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;


int main(){
    int n;
    cin >> n;
    int x[n];
    for (int i = 0; i < n; i ++) {
        cin >> x[i];
    }
    
    int flag1 = 0;
    while (flag1 == 0) {
        sort(x, x + n);
        int flag2 = 0;
        for (int i = n-1; i > 0; i --) {
            if (x[i] > x[i-1]) {
                flag2 = 1;
                x[i] = x[i] - x[i-1];
            }
        }
        if (flag2 == 0) {
            flag1 = 1;
        }
    }
    
    cout << n*x[0];
}

相關推薦

Codeforces Round #228 (Div. 2), problem: (A) Fox and Number Game

Note In the first example the optimal way is to do the assignment: x2 = x2 - x1. In the second example the optimal sequence of operations is: x3 = x3 -

Codeforces Round #514 (Div. 2), problem: (A) Cashier

給定客人來的時間和要接待他們的時間,然後算出自己能夠有多少次的休息 挨個列舉每一段的空閒時間就好啦,第i段的空閒時間是 t[i] - t[i-1] - last[i-1],然後除以a求和即可。 程式碼如下: #include <bits/stdc++.h>

Codeforces Round #510 (Div. 2), problem (D) Petya and Array 分治

本題如果採用兩層for迴圈遍歷每個l和r,時間複雜度為O(n2),將會超時。所以可以採用分治的演算法,將陣列二分遞迴,完成一個分支之後將此次l和r之間的數進行排序,目的是能以O(n)的時間複雜度統計出此分支符合要求的個數。 ac程式碼: #include <bits/std

Codeforces Round #532 (Div. 2)(A. Roman and Browser)

A. Roman and Browser time limit per test1 second memory limit per test256 megabytes inputstandard input

單調棧經典模板(Codeforces Round #305 (Div. 2), problem: (D) Mike and Feet)

#include <bits/stdc++.h> using namespace std; const int maxn = 200000 + 10; stack<int> stk; int a[maxn] , dpl[maxn] , dpr[max

Codeforces Round #365 (Div. 2) Problem D.Mishka and Interesting sum 解題報告

題目連結:Here! 題目大意:給你n個數,然後m次查詢,每一次查詢輸出所有在給定區間內出現偶數次數的數的異或值,如果只有一個出現偶數次數的數,則直接輸出該數,如果沒有出現偶數次數的數,則輸出0。 解題思路:看到區間查詢,第一反應是線段樹,但是用線段樹來統計區間內出現次數為

Codeforces Round #436 (Div. 2), problem: (D) Make a Permutation!

scanf problem codeforce ++ round class span com make #include <cstdio> #include <cstring> #include <vector> using names

Codeforces Round #427 (Div. 2) Problem C Star sky (Codeforces 835C) - 前綴和

題目 scan 開心 color 一個 lin cond cati ict The Cartesian coordinate system is set in the sky. There you can see n stars, the i-th has coordi

Codeforces Round #436 (Div. 2), problem: (C) Bus

cst lag () turn code span cpp urn print #include <cstdio> int main(){ long long a,b,f,k,i,tot,s[11000],cnt; scanf("%lld%lld%lld%l

Codeforces Round #439 (Div. 2) Problem C (Codeforces 869C) - 組合數學

note als 9.png fig fine 連接 time mod reac — This is not playing but duty as allies of justice, Nii-chan! — Not allies but j

Codeforces Round #439 (Div. 2)【A、B、C】

ring open 方法 tar index none 矩形 %d 個數 Codeforces Round #439 (Div. 2) codeforces 869 A. The Artful Expedient 看不透( 1 #include<c

Codeforces Round #440 (Div. 2)【A、B、C、E】

one target minimum contest () 同一行 += 不同 href Codeforces Round #440 (Div. 2) codeforces 870 A. Search for Pretty Integers(水題) 題意:給兩個數

Codeforces Round #441 (Div. 2)【A、B、C、D】

algorithm amp puts spa splay http con 無法 是否 Codeforces Round #441 (Div. 2) codeforces 876 A. Trip For Meal(水題) 題意:R、O、E三點互連,給出任意兩點間距

Codeforces Round #443 (Div. 2) 【A、B、C、D】

log ram har bre 個人 algorithm -a 的人 lan Codeforces Round #443 (Div. 2) codeforces 879 A. Borya‘s Diagnosis【水題】 1 #include<cst

Codeforces Round #487 (Div. 2) C - A Mist of Florescence

至少 pan mes info enter test pre -- img 傳送門:http://codeforces.com/contest/989/problem/C 這是一個構造問題。 構造一張網格,網格中的字符為’A’、’B’、’C’、’D’,並且其連通塊的個數分別

Codeforces Round #487 (Div. 2) C - A Mist of Florescence

-- pac != using ace work 矩形 col () C - A Mist of Florescence 把50*50的矩形拆成4塊 #include<bits/stdc++.h> using namespace std; int a

Codeforces Round #517 (Div. 2), problem (D) Minimum path 貪心

本題運用貪心演算法,需要按照字典序輸出路徑,路徑包含2n-1個字元,只需要按正序求出當前情況下的最優解即可。需要注意的是當最優解相同的時候需要保留剩餘更改次數更大的那個路徑。 在求解本題的過程中由於構思的偏差出現了Runtime error、Memory limit exceeded

Codeforces Round #511 (Div. 2), problem: (C) Enlarge GCD 數論

思路大體是先找到an取值範圍內的質數並儲存,求出輸入的資料中最大公倍數並將a陣列都除以最大公倍數,然後遍歷an的取值範圍(從2開始,1不算),如果是質數就統計這個質數和它的倍數,就是使最小公倍數增加所需要去掉的數的個數,遍歷過程中取最小值即可。並注意判定特殊情況。這個方法幾乎要超時了似乎

Codeforces Round #509 (Div. 2)】A,B,C,D

這是蒟蒻的真·第一場CF...所以其實升了1500+還是不錯吧? 題意:找包含給出的n個數的最短連續序列,輸出新加入的數的最小個數。 分析:排序+掃描即可。 #include<i

Codeforces Round #514 (Div. 2), problem: (C) Sequence Transformation

這個c題還挺有意思的,一開始實在是看不懂題,後來理解了,要字典序(誤)最大,就必須越快增加整個數列的gcd越好。 注意到這個數列是有序而且從1到n,那麼先假設n比較大,這個時候gcd是1,我們要刪掉最少的數讓gcd改變,最少刪掉多少呢? n範圍內,是2這個數的倍數的數