面试题小议---BY gremount
Problem 1: 两个烧杯,一个放糖一个放盐,用勺子舀一勺糖到盐,搅拌均匀,然后舀一勺混合物会放糖的烧杯,问你两个烧杯哪个杂质多?
提示:相同。(1)可以用一个特殊数据计算一下,可以得到两个烧杯里的sugar和salt含量是一样的;
(2)假设杂质不等,那么将杂质放回原杯中,则杯中物体重量必变化,不合理。
Problem 2:如何判断一个点是否在一个多边形内?
提示:将多边形切成很多三角形,判断是不是在某个三角形中;判断是不是在三角形中:(1)可以先找一个点在三角形中,
然后计算这个点和已知点的A*X+B*Y,得到的结果通号就在同一侧,如果与三条线都同侧就在三角形内部。(2)计算已知点和
三角形三边的乘积除2的和是否等于三角形的面积,如果相等就在三角形内部。
Problem
3:
Problem Description(hdu 1495)
大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的ACMER你们说他们能平分吗?如果能请输出倒可乐的最少的次数,如果不能输出"NO"。
Input
三个整数 : S 可乐的体积 , N 和 M是两个杯子的容量,以"0 0 0"结束。
Output
如果能平分的话请输出最少要倒的次数,否则输出"NO"。
Sample Input
7 4 3 4 1 3 0 0 0
Sample Output
NO 3
提示:(N,M,S)为状态,状态做点,操作做边,然后用BFS遍历图,如果可以到达目的状态则YES,并得到最少操作数;否则,输出NO。操作的复杂度为BFS的复杂度:O(V+E), 其中V就是所有可能的状态=(N+1)(M+1),E就是状态的转移操作数,每个状态有6种操作(N->M, N->S, M->N, M->S, S->N ,S->M),所以E=6*V。
Problem 4:无平方因子的数:给出正整数n和m,区间[n,m]内的“无平方因子”的数有多少个?整数p无平方因子当且仅当不存在k>1,使得p是k^2的
倍数。1<=n<=m<=10^12,m-n<=10^7
提示:参考筛法求素数的算法,复杂度为O(NlogN)
Problem 5:大整数取模:输入正整数n和m,输出n mod m的值。n<=10^100,m<=10^9
提示:mod分解公式,(1) (a+b)mod n = ((a mod n)+(b mod n))mod n (2) (a*b)mod n =(( a mod n)*(