题目描述
思路解析
由题:题目输入为循环输入,在输入时,可以使用while
根据输入描述以及题目描述
第一行 输入的是 怪物的个数 以及小易的初始能力值
第二行输入 每个怪物的能力值
然后 小易开始准备升级 面对能力小于等于他的 小易在原来的基础上吸收怪物全部能力。面对能力大于他的 小易吸收 他和怪物的能量的 最大公约数
我们使用vector 来存放怪物的各个能量值 使用for循环 让小易与怪物逐个比较 还需要实现一个求最大公约数的函数。
代码实现如下
代码实现
#include<iostream>
using namespace std;
#include<vector>
//函数实现最大公约数
int Fun(int a, int b) {
int c = min(a, b);
int ret = 0;
for (int i = 1; i <= c; i++) {
if (a % i == 0 && b % i == 0) {
ret = max(ret, i);
}
}
return ret;
}
int main() {
int n, a;
//多组输入
while (cin >> n >> a) {
vector<int> B(n);
for (int i = 0; i < n; i++) {
cin >> B[i];
}
for (int i = 0; i < n; i++) {
if (a >= B[i]) {
a += B[i];
} else {
a += Fun(a, B[i]);
}
}
cout << a << endl;
}
return 0;
}