您的位置:首页 > 编程语言 > Java开发

网易2016招聘笔试<升级之路>Java代码

2017-06-09 20:04 337 查看
本文地址:http://blog.csdn.net/shanglianlm/article/details/72968583

小易经常沉迷于网络游戏。有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 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)表示每个怪物的防御力

输出描述:

对于每组数据,输出一行,每行仅包含一个整数,表示小易的最终能力值

输入例子:

3 50

50 105 200

5 20

30 20 15 40 100

输出例子:

110

205

package com.mingo.common;

import java.util.ArrayList;

public class NeteasyUpgrade {

public static int upGrade(int inatial, ArrayList<Integer> list){
int result = inatial;

for(Integer li:list){
if(result >= li){
result += li;
}else{
result += greatestCommondivisor(result,li) ;
}
}
return result;
}

//使用碾转相除法求最大公约数
public static int gcd(int a,int b){
if(a%b==0){
return b;
}else{
return gcd(b,a%b);
}
}

public static int greatestCommondivisor(int num1,int num2){
int result = 1;
if(num1>num2){
result = gcd(num1,num2);
}else{
result = gcd(num2,num1);
}
return result;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<10;i++){
int randInt = (int)((Math.random()) * 200);
list.add(randInt);
}

int inatial=100;
System.out.println("输入数组为:");
for(Integer li:list){
System.out.print(li+", ");
}
System.out.println();
int value = upGrade(inatial, list);
System.out.println("最终能力为:"+value);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 网易 招聘