2007年3月7日 星期三

CMClass: 微軟徵才試題

http://heaven.branda.to/~thinker/GinGin_CGI.py/show_id_doc/226 看到的題目
我的解答是 3 跟 4 (這不是正確答案喔!請看意見)
求解的程式在這裡

#include <stdio.h>

int main(int argc, char *argv[])
{
int i, j;
int a[100] = {0};
int m[2500] = {0};

for (i = 2; i < 50; i++) {
for (j = i; j < 50; j++) {
a[i+j]++;
m[i*j]++;
}
}

for (i = 2; i < 50; i++) {
for (j = i; j < 50; j++) {
if (a[i+j] == 2 && m[i*j] == 2) printf("%d %d\n", i, j);
}
}

return 0;
}

從以前就很喜歡寫程式來解數學問題... ^_^

3 則留言:

hoamon 提到...

你的程式有幾個小問題:
1、i與j是不同數字。
2、(a[i+j] == 2 && m[i*j] == 2)的if條件式是不合理的。在第1階段(亞譚不知道及明歆不知道)只告訴我們a[i+j] >=2 及 m[i*j] >=2 都要大於等於2。
3、沒有考量第2階段,也就是「亞譚知道了」這個條件。

我也有寫了一個 Python 程式,歡迎你看看: http://hoamon.blogspot.com/2007/03/cmclass.html

$4 提到...

對喔... 哈... 弄錯了... XD

$4 提到...

重算一遍 http://fourdollars.blogspot.com/2007/03/cmclass_08.html