因為仲介寄信來說有可以面試一次就知道結果的公司在招人
之前應徵某P公司寫程式寫得很開心(雖然面試第一關就被刷掉XD)
於是聽到面試前有程式測驗可以寫就很歡樂的報名了~~
(強調目前沒有要轉職,只是來試試看自己能力+測測看市場價值)
前幾五題蠻簡單的幾乎秒殺
第六題是問你面積小於5000的直角三角形(且三邊都為整數。3, 4, 5跟4,3,5算同一組)有幾組
一時沒想出什麼特殊的邏輯
就直接把1~10000之間所有面積小於5000的組別都嘗試
然後確認是不是整數是用
$b = sqrt($a);
$c = ceil($a);
$d = floor($a);
若$b,$c,$d各轉(int)後都相同才當作整數(一時想不出其他好辦法QQ)
然後跑完解出來還真的答對XD(限制執行時間可能就死了?)
最後在第七題途中結束了QQ(全部有十題QQ)
第七題是算特定條件的羅馬標記數字的總和
題目先簡介了羅馬標記的數字邏輯
問你從1~1000之中,用七個字母標記的數字總和是多少
一開始時間就剩不多(大概十幾分鐘?) 有點緊張腦袋打結
弄半天弄出好像可以把數字轉換成羅馬標記的邏輯的前半就時間到了orz
還沒做4或9那種變換的處理
但因為太想知道自己到底能不能夠寫出來
後來還是努力寫了XD
貼在這裡做個紀錄(雖然很亂)
$array = array(1000,500,100,50,10,5,1);
$final_ans = 0;
for($digit = 1; $digit <= 1000; $digit++)
{
$ans =array();
$n = $digit;
for($i = 0; $i< count($array);$i++) {
if ($n - $array[$i] >= 0) {
$quo = floor($n/$array[$i]);
$n-=$array[$i]*$quo;
if (empty($ans[$array[$i]])) {
$ans[$array[$i]] = $quo;
} else {
$ans[$array[$i]] = $quo;
}
}
}
$reversed_ans = array_reverse($ans, true);
foreach($reversed_ans as $alp => $amount) {
$ori_index = array_search($alp, $array);
if ($ori_index == 0) {
continue;
}
$change = $array[$ori_index-1];
if ($amount > 1
&& $amount*$alp == $change - $alp) {
$reversed_ans[$alp] = 1;
if (empty($reversed_ans[$change] )) {
$reversed_ans[$change] = 1;
}
}
}
$cnt = 0;
foreach($reversed_ans as $alp => $amount) {
$cnt += $amount;
}
if ($cnt == 7) {
$final_ans += $digit;
//echo($digit . "\n");
// var_dump($reversed_ans);
}
//echo ($digit . " ");
}
echo($final_ans);
Google別人的轉換器丟了幾個例子進去
第一次太雞婆XD 每個位數都遇到4就處理根本~A___A
ex: 439
我第一次寫的會變成CDIXL (500-100 + 50 - 10 - 1)
但其實應該是CDXXXIX (沒有連在一起的就不用轉換啦)
第二次直接不轉換(上位不+1)
但是在上位本來不存在的時候會少一碼
ex: 14
我的變成XI (上位的V不被記錄)
實際上是XIV
第三次終於幾乎都對了(吧,只丟了大概10幾個進去試,懶得寫來全跑了XD)
總之我算出來的答案是101232
如果有進到面試+面試有被問到我再來對對看答案XD
btw, 最近都在寫js
突然寫php差點轉不回來XDDD
(畢竟php寫五六年了,js才半年多,還是選php來寫比較直覺[?])
01/28 更新
有要進面試
不過因為人太多所以延到下禮拜
反正是來測市場價值的
保持平常心~
