1. 程式人生 > >【網易】小易的升級之路

【網易】小易的升級之路

題目描述

小易經常沉迷於網路遊戲.有一次,他在玩一個打怪升級的遊戲,他的角色的初始能力值為 a.在接下來的一段時間內,他將會依次遇見n個怪物,每個怪物的防禦力為b1,b2,b3...bn. 如果遇到的怪物防禦力bi小於等於小易的當前能力值c,那麼他就能輕鬆打敗怪物,並 且使得自己的能力值增加bi;如果bi大於c,那他也能打敗怪物,但他的能力值只能增加bi 與c的最大公約數.那麼問題來了,在一系列的鍛鍊後,小易的最終能力值為多少?

輸入描述:

對於每組資料,第一行是兩個整數n(1≤n<100000)表示怪物的數量和a表示小易的初始能力值.
第二行n個整數,b1,b2...bn(1≤bi≤n)表示每個怪物的防禦力

輸出描述:

對於每組資料,輸出一行.每行僅包含一個整數,表示小易的最終能力值

示例1

輸入

複製

 
3 50 50 105 200 5 20 30 20 15 40 100

輸出

複製

110
205
#include <iostream>
#include "stdio.h"
#include <vector>
using namespace std;
int gcd(int m ,int n)
{
    if(n==0)
        return m;
    
    int temp = m%n;
    m=n;
    n=temp; 
    return gcd(m,n);
}
int main()
{
    int n,ans;
    while(cin>>n>>ans)
    {
        while(n>0)
        {
            int cur;
            cin>>cur;
            ans = ans + ((ans<cur)? gcd(cur, ans):cur);
            n--;
        }
        cout<<ans<<endl;
    }
    return 0;
}