原文写于2015/10/09
刚刚做完网易的题,手上还是火辣辣的。
题型分三种,选择题20*2,问答题3*10,编程题2*30。选择题不多说,主要考核内容是TCP/IP基础,linux基本操作,线程管理知识,数据结构和c语言基础。我个大水逼网络相关的基本靠蒙,估计20题能做对12题就谢天谢地了。
下面重点说一下问答题和编程题。问答题共三题,其中一题是问路由器在OSI模型和TCP/IP模型当中的位置,以及路由器的工作原理和相关协议。这个不赘述。
问答题的另外两个小题,和编程题的两个小题,是我今天博文的重点。
1.写一个类。该类只能创建唯一对象。
第一感觉,本题应该涉及到类的复制控制或是引用计数。但是,说实话,这题我是真不会。考试结束后找了一下相关的内容。
参考:http://www.cnblogs.com/this-543273659/archive/2011/08/02/2125487.html
2.已知给定数组A[1],A[2],...,A[n],要求在O(n)时间内创建新数组B[1],B[2],...,B[n],使得B[i] = A[1]*A[2]*...*A[n]/A[i],要求不能使用除法。
本题的难点在于:1)时间复杂度O(n). 2)不能使用除法。
左思右想,没想到答案。考试结束后继续找相关的内容。
参考:http://www.aliog.com/41961.html
3.编程题
注:在赛码上笔试的所有编程题,输入数据的量都是未知的,最好使用getline()来获取测试用例的输入,以便于判断输入的结束。
/***************************************************************************************************************************/
小易的升级之路
Problem Description:
小易经常沉迷于网络游戏。有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为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)表示每个怪物的防御力
数据保证——
50%的n<=100,
80%的n<=1000,
90%的n<=10000,
100%的n<=100000.
输出
对于每组数据,输出一行。每行仅包含一个整数,表示小易的最终能力值。
样例输入
3 50
50 105 200
5 20
30 20 15 40 100
样例输出
110
205
/***************************************************************************************************************************/
本题的注意点:
1)最大公约数的计算。我的方法比较笨,先对两个数做质因数分解,再分别计算所有的公共质因数之积。
2)数据规模。因最终能力值的最大可能为n*n,可达到10^10,所以使用int不足以表示该数据的规模,建议使用long long或字符串。
代码如下
#include"cstdio"
#include"iostream"
#include
#include
#include
/***************************************************************************************************************************/
约德尔测试
Problem Description:
兰博和提莫闲聊之后,回归到了他们的正题,约德尔人的未来。
说起约德尔人的未来,黑默丁格曾经提出了一个约德尔测试,将约德尔人的历史的每个阶段都用一个字符表达出来。(包括可写字符,不包括空格。)。然后将这个字符串转化为一个01串。转化规则是如果这个字符如果是字母或者数字,这个字符变为1,其它变为0。然后将这个01串和黑默丁格观测星空得到的01串做比较,得到一个相似率。相似率越高,则约德尔的未来越光明。
请问:相似率为多少?
输入
每组输入数据为两行,第一行为有关约德尔人历史的字符串,第二行是黑默丁格观测星空得到的字符串。
(两个字符串的长度相等,字符串长度不小于1且不超过1000。)
输出
输出一行,在这一行输出相似率。用百分数表示。(相似率为相同字符的个数/总个数,精确到百分号小数点后两位。printf("%%");输出一个%。)
样例输入
@!%12dgsa
010111100
样例输出
66.67%
/***************************************************************************************************************************/
本题的核心即是字符串中每个字符类型的判断。基本没有难点。
代码如下:
#include"cstdio"
#include"iostream"
#include
#include
#include