網(wǎng)易筆試編程題2016_第1頁(yè)
網(wǎng)易筆試編程題2016_第2頁(yè)
網(wǎng)易筆試編程題2016_第3頁(yè)
網(wǎng)易筆試編程題2016_第4頁(yè)
網(wǎng)易筆試編程題2016_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、編程題 小易的升級(jí)之路小易經(jīng)常沉迷于網(wǎng)絡(luò)游戲.有一次,他在玩一個(gè)打怪升級(jí)的游戲,他的角色的初始能力值為 a.在接下來(lái)的一段時(shí)間內(nèi),他將會(huì)依次遇見(jiàn)n個(gè)怪物,每個(gè)怪物的防御力為b1,b2,b3.bn. 如果遇到的怪物防御力bi小于等于小易的當(dāng)前能力值c,那么他就能輕松打敗怪物,并 且使得自己的能力值增加bi;如果bi大于c,那他也能打敗怪物,但他的能力值只能增加bi 與c的最大公約數(shù).那么問(wèn)題來(lái)了,在一系列的鍛煉后,小易的最終能力值為多少?輸入描述:對(duì)于每組數(shù)據(jù),第一行是兩個(gè)整數(shù)n(1n<100000)表示怪物的數(shù)量和a表示小易的初始能力值.第二行n個(gè)整數(shù),b1,b2.bn(1bin)表示每

2、個(gè)怪物的防御力輸出描述:對(duì)于每組數(shù)據(jù),輸出一行.每行僅包含一個(gè)整數(shù),表示小易的最終能力值輸入例子:3 5050 105 2005 2030 20 15 40 100輸出例子:110205#include<iostream>#include<cstdio>#include<string>#include<vector>#include<list>#include<deque>#include<stdio.h>#include<algorithm>using namespace std;/*int gc

3、d(int m,int n) return n = 0 ? m : gcd(n,m%n);*/int gcd(int a,int b) if(!b) return a; return gcd(b,a%b);int main() int n,ack,ans; while(scanf("%d%d",&n,&ack)!=EOF) while(n-) scanf("%d",&ans); if(ans>ack) ack+=gcd(ack,ans); else ack+=ans; printf("%dn",ack);

4、 return 0;編程題 炮臺(tái)攻擊蘭博教訓(xùn)提莫之后,然后和提莫討論起約德?tīng)柸?談起約德?tīng)柸?自然少不了一個(gè)人,那 就是黑默丁格-約德?tīng)柸藲v史上最偉大的科學(xué)家. 提莫說(shuō),黑默丁格最近在思考一個(gè)問(wèn)題:黑默丁格有三個(gè)炮臺(tái),炮臺(tái)能攻擊到距離它R的敵人 (兩點(diǎn)之間的距離為兩點(diǎn)連續(xù)的距離,例如(3,0),(0,4)之間的距離是5),如果一個(gè)炮臺(tái)能攻擊 到敵人,那么就會(huì)對(duì)敵人造成1×的傷害.黑默丁格將三個(gè)炮臺(tái)放在N*M方格中的點(diǎn)上,并且給出敵人 的坐標(biāo). 問(wèn):那么敵人受到傷害會(huì)是多大?輸入描述:第一行9個(gè)整數(shù),R,x1,y1,x2,y2,x3,y3,x0,y0.R代表炮臺(tái)攻擊的最大距離,(x1,

5、y1),(x2,y2),(x3,y3)代表三個(gè)炮臺(tái)的坐標(biāo).(x0,y0)代表敵人的坐標(biāo).輸出描述:輸出一行,這一行代表敵人承受的最大傷害,(如果每個(gè)炮臺(tái)都不能攻擊到敵人,輸出0×)輸入例子:1 1 1 2 2 3 3 1 2輸出例子:2x#include<iostream>#include<stdio.h>#include<math.h>using namespace std;struct Point int x,y; Point(int x=0,int y=0):x(x),y(y)/構(gòu)造函數(shù),方便代碼編寫 Point(Point &a):

6、x(a.x),y(a.y);inline int Distance(Point A,Point B) return (A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y);int main() int R; Point A,B,C,P; while(scanf("%d%d%d%d%d%d%d%d%d",&R,&A.x,&A.y,&B.x,&B.y,&C.x,&C.y,&P.x,&P.y)!=EOF) int sum=0; R*=R; if(Distance(A,P)<=R)

7、 sum+; if(Distance(B,P)<=R) sum+; if(Distance(C,P)<=R) sum+; printf("%dxn",sum); return 0;/1 1 1 2 2 3 3 1 2編程題 掃描透鏡在N*M的草地上,提莫種了K個(gè)蘑菇,蘑菇爆炸的威力極大,蘭博不想貿(mào)然去闖,而且蘑菇是隱形的.只 有一種叫做掃描透鏡的物品可以掃描出隱形的蘑菇,于是他回了一趟戰(zhàn)爭(zhēng)學(xué)院,買了2個(gè)掃描透鏡,一個(gè) 掃描透鏡可以掃描出(3*3)方格中所有的蘑菇,然后蘭博就可以清理掉一些隱形的蘑菇. 問(wèn):蘭博最多可以清理多少個(gè)蘑菇?輸入描述:第一行三個(gè)整數(shù):N,

8、M,K,(1N,M20,K100),N,M代表了草地的大小;接下來(lái)K行,每行兩個(gè)整數(shù)x,y(1xN,1yM).代表(x,y)處提莫種了一個(gè)蘑菇.一個(gè)方格可以種無(wú)窮個(gè)蘑菇.輸出描述:輸出一行,在這一行輸出一個(gè)整數(shù),代表蘭博最多可以清理多少個(gè)蘑菇.#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;int m2525;int vis12525;int vis22525;int d92=-1,-1,-1,0,-1,1,0,

9、-1,0,0,0,1,1,-1,1,0,1,1;inline void sum_map(int x,int y) for(int i=0;i<9;i+) if(mx+di0y+di1>0) vis1xy+; if(mx+di0y+di1>1) vis2xy+; inline int sd_sum(int x,int y,int i,int j) if(x=i&&y=j) return vis2ij; else if(i>=x-2&&i<=x+2&&j>=y-2&&j<=y+2) int t

10、mp=0; for(int k=0;k<9;k+) int xi=i+dk0; int yi=j+dk1; if(xi>=x-1&&xi<=x+1&&yi>=y-1&&yi<=y+1) if(mxiyi>1) tmp+; else if(mxiyi>0) tmp+; /control may reach end of non-void function -Werror,-Wreturn-type return tmp;/得知原因是自己定義了一個(gè)有返回值的函數(shù),而函數(shù)結(jié)尾卻沒(méi)有返回值; else retur

11、n vis1ij;int main() int N,M,K; while(scanf("%d%d%d",&N,&M,&K)!=EOF) int x,y; memset(m,0,sizeof(m); memset(vis1,0,sizeof(vis1); memset(vis2,0,sizeof(vis2); for(int i=0;i<K;i+) scanf("%d%d",&x,&y); mxy+; for(int i=1;i<=N;i+)/打表 for(int j=1;j<=M;j+) sum_

12、map(i,j); int mmax=0; for(int i=0;i<=N;i+) for(int j=0;j<=M;j+) for(int ii=0;ii<=N;ii+) for(int jj=0;jj<=M;jj+) mmax=max(vis1ij+sd_sum(i,j,ii,jj),mmax); printf("%dn",mmax); return 0;題目來(lái)源:牛客網(wǎng)-網(wǎng)易2016年研發(fā)工程師編程題二。1. 獎(jiǎng)學(xué)金小v今年有n門課,每門都有考試,為了拿到獎(jiǎng)學(xué)金,小v必須讓自己的平均成績(jī)至少為avg。每門課由平時(shí)成績(jī)和考試成績(jī)組成,滿分為r。

13、現(xiàn)在他知道 每門課的平時(shí)成績(jī)?yōu)閍i ,若想讓這門課的考試成績(jī)多拿一分的話,小v要花bi 的時(shí)間復(fù)習(xí),不復(fù)習(xí)的話當(dāng)然就是0分。同時(shí)我們顯然可以發(fā)現(xiàn)復(fù)習(xí)得再多也不會(huì)拿到超過(guò)滿分的分?jǐn)?shù)。為了拿到獎(jiǎng)學(xué)金,小v至少要花多少時(shí)間復(fù)習(xí)。輸入描述: 第一行三個(gè)整數(shù)n,r,avg(n大于等于1小于等于1e5,r大于等于1小于等于1e9,avg大于等于1小于等于1e6),接下來(lái)n行,每行兩個(gè)整數(shù)ai和bi,均小于等于1e6大于等于1輸出描述: 一行輸出答案。輸入例子: 5 10 9 0 5 9 1 8 1 0 1 9 100輸出例子: 43分析: 完成這個(gè)題目需要注意兩個(gè)問(wèn)題: (1)求出最少?gòu)?fù)習(xí)時(shí)間,需要優(yōu)先選

14、擇每分的復(fù)習(xí)時(shí)間最小的課程,那么需要對(duì)<平時(shí)成績(jī),復(fù)習(xí)時(shí)間>元素對(duì)按復(fù)習(xí)時(shí)間遞增進(jìn)行排序; (2)因?yàn)檎n程數(shù)很多,每分復(fù)習(xí)時(shí)間很大,所需最小復(fù)習(xí)時(shí)間需要長(zhǎng)整型來(lái)存儲(chǔ),以防溢出; (3)如果所需復(fù)習(xí)時(shí)間小于等于0,需要特殊處理。測(cè)試通過(guò)源碼:#include <iostream>#include <vector>#include <algorithm>using namespace std;bool compare(const vector<int>& vec0,const vector<int>& vec1

15、) return vec01<vec11; /升序排列int main(int argc,char* argv) int courseNum=0,maxScore=0,average=0; while(cin>>courseNum>>maxScore>>average) vector<vector<int> > regularGrade_effort(courseNum,vector<int>(2,0); int regularGradeSum=0;/平時(shí)總分 for(int i=0;i<courseNum;+

16、i) cin>>regularGrade_efforti0>>regularGrade_efforti1; regularGradeSum+=regularGrade_efforti0; sort(regularGrade_effort.begin(),regularGrade_effort.end(),compare);/按每分的復(fù)習(xí)時(shí)間升序排列 long long int minimumTime=0; /因?yàn)槊糠值膹?fù)習(xí)時(shí)間很大,需要長(zhǎng)整型,否則溢出,不能通過(guò)測(cè)試 int needScore=courseNum*average-regularGradeSum; if

17、(needScore <=0) goto end; for(int i=0;i<courseNum;+i) for(int j=0;j<maxScore-regularGrade_efforti0;+j) -needScore; minimumTime+=regularGrade_efforti1; if(needScore=0) goto end; end: cout<<minimumTime<<endl; 2.路燈一條長(zhǎng)l的筆直的街道上有n個(gè)路燈,若這條街的起點(diǎn)為0,終點(diǎn)為l,第i個(gè)路燈坐標(biāo)為ai,每盞燈可以覆蓋到的最遠(yuǎn)距離為d,為了照明需求,所有

18、燈的燈光必須覆蓋整條街,但是為了省電,要求這個(gè)d最小,請(qǐng)找到這個(gè)最小的d。輸入描述: 每組數(shù)據(jù)第一行兩個(gè)整數(shù)n和l(n大于0小于等于1000,l小于等于1000000000大于0)。第二行有n個(gè)整數(shù)(均大于等于0小于等于l),為每盞燈的坐標(biāo),多個(gè)路燈可以在同一點(diǎn)。輸出描述: 輸出答案,保留兩位小數(shù)。輸入例子: 7 15 15 5 3 7 9 14 0輸出例子: 2.5分析: (1)問(wèn)題的實(shí)質(zhì)是求一個(gè)數(shù)組序列中的兩個(gè)連續(xù)元素之間的最大差值,還需要考慮首尾的特殊性; (2)我為了練習(xí)set集合容器,所以使用了set來(lái)存儲(chǔ)路燈位置,當(dāng)然你也可以使用vector容器。相對(duì)于vector容器,其好處是元素不重復(fù),自動(dòng)排序,劣勢(shì)就是迭代器不支持算術(shù)加減操作,只支持自增+和自減操作。測(cè)試通過(guò)的源碼:#include <iostream>#include <set>#include <iomanip>using namespace std;in

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論