2017年美团校招后台开发部分题解

来源:互联网 发布:新电脑怎么连接网络 编辑:程序博客网 时间:2024/05/01 10:59

题目为三大部分,第一部分二三十个逻辑推理选择题,第二部分计算机方面的选择题。第三部分,两个编程题

逻辑题1:队伍长度800米,队员前进速度是80米/分,队长在队首,首长通知队长从对头以其他队员三倍的速度跑到队尾传达命令。传达命令耗时一分钟。立即以同样的速度返回队首,请问队长总共用时多长?

:1)从头到尾:t1=800/(80*3+80)=2.5;

2)传达时间:t2=1;

3)从尾到头:t3=800/(80*3-80)=5;

总共:8.5

逻辑题2:有120个学生,其中100个人同年同月生,请问至少有几个人同年同月生?

:此题注意至少和最少的区别,此题最多是100人。最少是0个人。至少就是介于最多和最少之间。12个人就没有重复的人,13至少会出现2个人重复。100个人怎样表达至少几个人重复呢?就是看100/12,如果有余数就在加一。就是9个人。

逻辑题3:有三辆不同班次的公交车,有一趟车15分钟发一趟,12分钟发一趟,9分钟发一趟。8点钟三辆车同时发车,问几点后三辆车有可以同时发车。

:要让他们相遇,他们又是同时发的车,就只能路程是一样的,设他们的速度为v,发的趟数分别是x,y,z,时间

15x=12y=9z,可知时间是15,12,9的公倍数180分钟,也就是3小时,所以11点回再次相遇。

计算机选择题 在非抢占调度方式中,可能引起进程调度的有(B)

A.正在执行的进程执行完毕 

B.在进程通信或同步中执行了某些原语操作,如P操作(wait)

C.更高优先权的进程加入队列

D.执行中的进程提出I/O请求而暂停队列

更高优先权的进程进入队列,不一定就开始利用cpu资源,也就不存在发生进程调度。

编程题1:对于一个十进制数,他的数位等于将它各位数字相加得到的和。现在知道某个十进制数位和等于s,并且这个数不包含0,且任意相邻的数位是不同的,现在想知道满足这样条件的最大数是多少

输入:第一行整数s:1<=s<=42

输出满足条件的最大值

解:先不谈程序的内存限制,运行时间限制。认真审题,要求输入了数位和,输出最大的十进制。开始我题目理解错了,一看见那个数位和,就想着怎么求一个数的数位和。结果题意弄反了,题目要求的不是数位和。

1.数位和最大为42,要想十进制数最大,就是位数要最大,那最大就是42个1.可是题目中要求数字不重复,那就是21212的时候达到相邻数字的不重复的最大值。1+2=3,那就是求数位和42里面有几个3(21)。

2.数位和是取余得到的,输出的“21”是根据输入的数字除与3得的商为循环次数得到的。就要对余数区别对待,余数只可能是1和2.

import java.util.Scanner;public class Main {    public static void main(String[] args) {// write your code here            Scanner sc=new Scanner(System.in);            int a=sc.nextInt();            int num=a%3==0?a/3:a/3+1;            StringBuffer s=new StringBuffer();            if(a%3==0){                for(int i=0;i<num;i++)                {                    s.append("21");                }                System.out.println(s.toString());            }            else if(a%3==1){                for(int i=0;i<num-1;i++) {                    s.append("12");                }                s.append("1");                System.out.println(s.toString());            }            else if(a%2==2){                for(int i=0;i<num-1;i++)                {                    s.append("21");                }                s.append("2");                System.out.println(s.toString());            }        }}