PTT推薦

Re: [閒談] 中華電信資訊系統開發及維運 問答題

看板Gov_owned標題Re: [閒談] 中華電信資訊系統開發及維運 問答題作者
chses910372
(機器人小廢物)
時間推噓 4 推:4 噓:0 →:7

※ 引述《THLu (生活需要更精彩!)》之銘言:
: 只記得大概題目內容,有錯再請留言更正~
: 謝謝!
: 資訊系統開發及維運
: 問答題:
: 第一題
: (一)請說明人工智慧、機器學習、深度學習之間的關係。(6分)
: (二)請說明區塊鏈技術的不可竄改性原理。(6分)
: (三)請說明何謂邊緣運算。
: 第二題 請參考以下F函數範例
: int F(int number){
: if (number == 2) return 2; //number是偶數
: … … …
: if (number == 1) return 1; //number是奇數
: … … …
: if (number == 0) return 0; //number無法判別
: … … …
: }
: (一)請使用數學運算子%完成判斷F函數為奇數或偶數的程式
: (注意程式需包含當number為負數或無法計算時的情況)
: (二)請使用邏輯運算子&完成判斷F函數為奇數或偶數的程式
: (注意程式需包含當number為負數或無法計算時的情況)
: (三)當-1為2次方時結果為正數,當-1為3次方時結果為負數,
: 請使用乘號運算子*和for迴圈完成-1為N次方時的正數或負數,
: 判別F函數為奇數或偶數的程式
: (注意程式需包含當number為負數或無法計算時的情況)
第三題

原本是

int F(int number) {

if(number == 0) return 2;

if(number < 0) {

number = (-1) * number;// 這行有錯

}

int i, k;

k = 1;

for(i = 0; i < number; i++) {

k = k * (-1);

}

if(k == (-1)) return 1;

if(k == 1) return 2;

return 0;

}


但是會有 overflow 的問題 -(-(2^31))= 2^31, int 最大是 2^31 - 1;

難過Q Q

可以改成

if(number > 0)

number = number * (-1);

for(i = 0;i > number; i--)

k = k * (-1);


才不會有錯


--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.75.36 (臺灣)

※ 文章網址:
https://www.ptt.cc/Gov_owned/M.1596967861.A.A44

chses91037208/09 18:12我連大一都不如QQ

lin249208/09 18:59寫leetcode常常卡在overflow,但這種手寫code加上時間壓

lin249208/09 18:59力真的考慮不到qq

lin249208/09 19:00好奇這種有沒有部分給分

amen138708/09 23:02我個人最後一題是用for(i=0;I<number;i++)number*=-1;

amen138708/09 23:03再用if去判斷number是否大於0

amen138708/09 23:04啊 沒事 我搞錯了 好像是一樣的方法...

GoGoJoe08/10 00:03為什麼會有-2的32次方? 我不太明白。

chses91037208/10 07:15int 最小值就是-(2^32)

chses91037208/10 08:14啊啊打錯

※ 編輯: chses910372 (118.168.12.29 臺灣), 08/10/2020 08:18:33

GoGoJoe08/10 09:21不用考慮溢位吧,全轉到非負整數討論就好。