#19536: 解法思路


z3x56 (二信阿資)

學校 : 基隆市私立二信高級中學
編號 : 41061
來源 : [61.231.128.29]
最後登入時間 :
2020-08-22 18:35:15
e455. 二進位的絕對值 -- Black_Lotus | From: [1.34.142.149] | 發表日期 : 2019-10-08 23:37

以8位元為例  10010100 =(-108) 最左位元為1代表負數,從右往左找出右邊第一個1,其左邊的位元皆反轉,即二的補數
                  01101100 =(+108)

先init 一個2^15~2^0的陣列  two[0..15] = { 32768, ..... 2,1 }

讀入字串 s[0..15]

若s[0]=='1'則用補數的方法,從s[15]往左找出第一個'1' ,假設是第 i 個
       ans = two[i];
      接著 for( j=i-1 ~ 0 ) 若 s[j]=='0'則 ans += two[j];

 否則 就是正數,直接求出其十進位值 for(i=0~15) 若s[i]=='1'則 ans+=two[i]

      

 
#19547: Re:解法思路


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [1.168.27.116]
最後登入時間 :
2024-03-31 17:58:15
e455. 二進位的絕對值 -- Black_Lotus | From: [61.223.57.16] | 發表日期 : 2019-10-09 10:09

 


這題的題主自己都沒解題。

 
#19548: Re:解法思路


z3x56 (二信阿資)

學校 : 基隆市私立二信高級中學
編號 : 41061
來源 : [61.231.128.29]
最後登入時間 :
2020-08-22 18:35:15
e455. 二進位的絕對值 -- Black_Lotus | From: [61.220.150.251] | 發表日期 : 2019-10-09 15:41

昨天記憶體限制 64MB ,AC了,但今天改為 8MB,變成 RE

應該要改 I/O吧,另找時間試試!?

 
ZeroJudge Forum