锁定老帖子 主题:创新工场笔试小记
精华帖 (2) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-24
1+6=7
2+5=7 3+4=7 如果是4个色子我毫不犹豫选14.。但是5个,不知道 |
|
返回顶楼 | |
发表时间:2010-09-24
ywz1984 写道 建议我们成立一个数学与编程的圈子,大家遇到类似的数学问题,我们通过编程方式实现出来。锻炼这样理论和实际相结合,有可以提高算法知识,同时也锻炼了思维逻辑。
大家说好不? 统一,你建一个呗,或者我建也行,不过没建过,还要研究一下怎么建。 |
|
返回顶楼 | |
发表时间:2010-09-25
vaneng 写道 1. 4, 这个程序就是求二进制数中1的个数
2. 组合数学里面的东西,好像叫形式幂级数, (x^1+x^2+...+x^6)^5 求x^14, 15, 17 20的系数 3. 0x5248, char 应该先变int 4. 最后一题算是比较有意思的一道题目。 以前见过5升 3升 求2升,不过从来没有考虑过广义的解法 刚才算了半个多小时,算是把思路理清楚了。 假设m>n, k随意。求出k=k%n, a=m,n的最大公因子,if k%a!=0 无解 否则,for(i: 1-n) 存在i,m*i%n=k%n 装水的方法就是先将m倒进n,n满倒掉,知道n不满,将n倒进c; 进行i次 将c里面倒n,n满倒掉,知道n不满,将n倒入c 再将n装满k/n次倒入c中即可。 (就是密码学里面的质数那块的知识) 写的不错,第一道题肯定是对的,后面不知所云 |
|
返回顶楼 | |
发表时间:2010-09-25
dxiao2 写道 我觉得第二个问题从期望的角度出发 应该是17.5 所以选17最接近
正解! 先算第个骰子的期望值,每面的概率都是1/6,单个骰子的期望为 1*1/6 + 2*1/6 + 3*1/6 + 4*1/6 + 5*1/6 + 6*1/6 = 3.5 5个骰子分别随机就是3.5*5=17.5,17或18为最接近的点数 |
|
返回顶楼 | |
发表时间:2010-09-26
长大做IT 写道 dxiao2 写道 我觉得第二个问题从期望的角度出发 应该是17.5 所以选17最接近
正解! 先算第个骰子的期望值,每面的概率都是1/6,单个骰子的期望为 1*1/6 + 2*1/6 + 3*1/6 + 4*1/6 + 5*1/6 + 6*1/6 = 3.5 5个骰子分别随机就是3.5*5=17.5,17或18为最接近的点数 那3个10面的骰子求和呢?,以上公式就不适用了吧 |
|
返回顶楼 | |
发表时间:2010-09-26
能做出这题的人就会创新了?
|
|
返回顶楼 | |
发表时间:2010-09-26
我一个都不会!不知道考这个题能显示出来什么
|
|
返回顶楼 | |
发表时间:2010-09-26
2.c=0x5248
4.倒水有两种方式,直接方式,间接方式。直接-两步,间接-三步。 e.g. M=3, N=1, K=2 ---> 直接方式: (0, 1, 0) (0, 0, 1) (0, 1, 1) (0, 0, 2) 间接方式: (3, 0, 0) (2, 1, 0) (0, 0, 2) 本质上是M*x + N*y + (M-N)*z = K,求x,y,z的正整数解,优化方程为使2*x+2*y+3*z最小。 public class TestLinear { //xCo*x + yCo*y + zCo*z = right public static void linearEquation(int M, int N,int right) { int xCo = M > N ? M : N; int yCo = M < N ? M : N; int zCo = xCo - yCo; int times = Integer.MAX_VALUE; int xResult=0, yResult=0, zResult=0; boolean isFound = false; for(int i=0; i*xCo<=right; i++) { for(int j=0; i*xCo+j*yCo<=right; j++) { for(int k=0; i*xCo+j*yCo+k*zCo<=right; k++) { if(xCo*i + yCo*j + zCo*k == right) { int t = 2*xCo + 2*yCo + 3*zCo; if(t < times) {//To Make the time minimal isFound = true; xResult = i; yResult = j; zResult = k; } } } } } if(!isFound) { System.out.println("Nope."); return; } System.out.println(xResult); System.out.println(yResult); System.out.println(zResult); System.out.println("Begin:"); int size = 0; for(int i=0; i<xResult; i++) { p(xCo, 0, size); size += xCo; p(0, 0, size); } for(int i=0; i<yResult; i++) { p(0, yCo, size); size += yCo; p(0, 0, size); } for(int i=0; i<zResult; i++) { p(xCo, 0, size); p(xCo-yCo, yCo, size); size += (xCo - yCo); p(0, 0, size); } } public static void p(int x, int y, int z) { System.out.println("(" + x + "," + y + "," + z + ")"); } public static void main(String[] args) { linearEquation(5, 3, 17); } } |
|
返回顶楼 | |
发表时间:2010-09-26
piao_bo_yi 写道 2.c=0x5248
4.倒水有两种方式,直接方式,间接方式。直接-两步,间接-三步。 e.g. M=3, N=1, K=2 ---> 直接方式: (0, 1, 0) (0, 0, 1) (0, 1, 1) (0, 0, 2) 间接方式: (3, 0, 0) (2, 1, 0) (0, 0, 2) 本质上是M*x + N*y + (M-N)*z = K,求x,y,z的正整数解,优化方程为使2*x+2*y+3*z最小。 public class TestLinear { //xCo*x + yCo*y + zCo*z = right public static void linearEquation(int M, int N,int right) { int xCo = M > N ? M : N; int yCo = M < N ? M : N; int zCo = xCo - yCo; int times = Integer.MAX_VALUE; int xResult=0, yResult=0, zResult=0; boolean isFound = false; for(int i=0; i*xCo<=right; i++) { for(int j=0; i*xCo+j*yCo<=right; j++) { for(int k=0; i*xCo+j*yCo+k*zCo<=right; k++) { if(xCo*i + yCo*j + zCo*k == right) { int t = 2*xCo + 2*yCo + 3*zCo; if(t < times) {//To Make the time minimal isFound = true; xResult = i; yResult = j; zResult = k; } } } } } if(!isFound) { System.out.println("Nope."); return; } System.out.println(xResult); System.out.println(yResult); System.out.println(zResult); System.out.println("Begin:"); int size = 0; for(int i=0; i<xResult; i++) { p(xCo, 0, size); size += xCo; p(0, 0, size); } for(int i=0; i<yResult; i++) { p(0, yCo, size); size += yCo; p(0, 0, size); } for(int i=0; i<zResult; i++) { p(xCo, 0, size); p(xCo-yCo, yCo, size); size += (xCo - yCo); p(0, 0, size); } } public static void p(int x, int y, int z) { System.out.println("(" + x + "," + y + "," + z + ")"); } public static void main(String[] args) { linearEquation(5, 3, 17); } } 第四题思路对的,没看代码。请问一下:优化方程为使2*x+2*y+3*z最小?这个优化方程从何而来? |
|
返回顶楼 | |
发表时间:2010-09-27
最后修改:2010-09-27
直接倒水需要两步,间接倒水需要三步。z表示间接倒水次数。
|
|
返回顶楼 | |