看板Gov_owned
: 只記得大概題目內容,有錯再請留言更正~
: 謝謝!
: 資訊系統開發及維運
: 問答題:
: 第一題
: (一)請說明人工智慧、機器學習、深度學習之間的關係。(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.cc), 來自: 1.160.75.36 (臺灣)※ 文章網址: https://www.ptt.cc/bbs/Gov_owned/M.1596967861.A.A44.html
→ chses910372: 我連大一都不如QQ08/09 18:12
推 lin2492: 寫leetcode常常卡在overflow,但這種手寫code加上時間壓08/09 18:59
→ lin2492: 力真的考慮不到qq08/09 18:59
→ lin2492: 好奇這種有沒有部分給分08/09 19:00
推 amen1387: 我個人最後一題是用for(i=0;I<number;i++)number*=-1;08/09 23:02
→ amen1387: 再用if去判斷number是否大於0 08/09 23:03
→ amen1387: 啊 沒事 我搞錯了 好像是一樣的方法...08/09 23:04
推 GoGoJoe: 為什麼會有-2的32次方? 我不太明白。08/10 00:03
→ chses910372: int 最小值就是-(2^32)08/10 07:15
→ chses910372: 啊啊打錯08/10 08:14
推 GoGoJoe: 不用考慮溢位吧,全轉到非負整數討論就好。 08/10 09:21