网易2016年研发project师编程题(2)
生活随笔
收集整理的這篇文章主要介紹了
网易2016年研发project师编程题(2)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
序
網易互聯網的實習筆試立即就開始了,做幾個練習題熟悉熟悉~嘿嘿~題目一:?小易的升級之路
小易常常沉迷于網絡游戲.有一次,他在玩一個打怪升級的游戲,他的角色的初始能力值為 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分析
注意,題目要求輸入多組數據; #include <iostream> #include <cstdio> #include <cstdlib> #include <vector>using namespace std;int gcd(int a, int b) {if (b == 0){return a;}//ifelse{return gcd(b, a%b);}//else }int main() {int n, a;while (scanf("%d %d", &n, &a) != EOF){vector<int> b(n, 0);for (int i = 0; i < n; ++i){scanf("%d", &(b[i]));}//forint curScore = a;for (int i = 0; i < n; ++i){if (curScore > b[i]){curScore += b[i];}//ifelse{int tmp = gcd(curScore, b[i]);curScore += tmp;}//else}//forprintf("%d\n", curScore);}//while//system("pause");return 0; }題目二:炮臺攻擊
蘭博教訓提莫之后,然后和提莫討論起約德爾人,談起約德爾人,自然少不了一個人,那 就是黑默丁格------約德爾人歷史上最偉大的科學家. 提莫說,黑默丁格近期在思考一個問題:黑默丁格有三個炮臺,炮臺能攻擊到距離它R的敵人 (兩點之間的距離為兩點連續的距離,比如(3,0),(0,4)之間的距離是5),假設一個炮臺能攻擊 到敵人,那么就會對敵人造成1×的傷害.黑默丁格將三個炮臺放在N*M方格中的點上,而且給出敵人 的坐標. 問:那么敵人受到傷害會是多大?輸入描寫敘述:
第一行9個整數,R,x1,y1,x2,y2,x3,y3,x0,y0.R代表炮臺攻擊的最大距離,(x1,y1),(x2,y2), (x3,y3)代表三個炮臺的坐標.(x0,y0)代表敵人的坐標.輸出描寫敘述:
輸出一行,這一行代表敵人承受的最大傷害,(假設每一個炮臺都不能攻擊到敵人,輸出0×)輸入樣例:
1 1 1 2 2 3 3 1 2輸出樣例:
2x分析
題目不難,相同是多組輸入數據。 #include <iostream> #include <cstdio> #include <vector> #include <algorithm> #include <cstdlib>using namespace std;double d(int x1, int y1, int x2, int y2) {return sqrt((double)((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2))); }int main() {int R;vector<int> x(4, 0), y(4, 0);while (scanf("%d", &R) != EOF){for (int i = 1; i < 4; ++i){scanf("%d %d", &x[i], &y[i]);}//forscanf("%d %d", &x[0], &y[0]);int count = 0;for (int i = 1; i < 4; ++i){if (d(x[0], y[0], x[i], y[i]) <= R)++count;}//forprintf("%dx\n", count);}//while//system("pause");return 0; }題目三:掃描透鏡
在N*M的草地上,提莫種了K個蘑菇,蘑菇爆炸的威力極大,蘭博不想貿然去闖,并且蘑菇是隱形的.僅僅 有一種叫做掃描透鏡的物品能夠掃描出隱形的蘑菇,于是他回了一趟戰爭學院,買了2個掃描透鏡,一個 掃描透鏡能夠掃描出(3*3)方格中全部的蘑菇,然后蘭博就能夠清理掉一些隱形的蘑菇. 問:蘭博最多能夠清理多少個蘑菇?輸入描寫敘述:
第一行三個整數:N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小; 接下來K行,每行兩個整數x,y(1≤x≤N,1≤y≤M).代表(x,y)處提莫種了一個蘑菇. 一個方格能夠種無窮個蘑菇.輸出描寫敘述:
輸出一行,在這一行輸出一個整數,代表蘭博最多能夠清理多少個蘑菇.分析
開始一直沒有理清楚解決思路,實際該題目僅僅須要注意兩個問題:- 首先。擴充矩陣N行M列(當N<3 或者M<3時,擴充其到3)方便處理;
- 其次,每一個掃描鏡在每一個格子內一次僅僅能清理一個蘑菇,找到第一個掃描鏡最大區域后。將該區域內的蘑菇數更新(每一個格子減一),相同處理第二個掃描鏡就可以;
牛客網 -- 原題鏈接
轉載于:https://www.cnblogs.com/yutingliuyl/p/7281989.html
總結
以上是生活随笔為你收集整理的网易2016年研发project师编程题(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 屏下摄像头全面屏!努比亚 Z50 Ult
- 下一篇: 5199 元起,三星 Galaxy S2