#38384:


s10900156@nhsh.tp.edu.tw (ShanC)

學校 : 臺北市立內湖高級中學
編號 : 138785
來源 : [118.167.222.118]
最後登入時間 :
2024-05-23 14:23:16
d235. 10929 - You can say 11 -- UVa10929 | From: [36.225.21.123] | 發表日期 : 2023-11-17 21:57

 

        int cnt = 0;

        for (int i = 0; i < str.length(); i++)     
                cnt += (((i & 1) << 1) - 1) * (str[i] - '0');
 
寫完了,剩下一行就判斷 cnt % 11 == 0 加上輸出就好了
 
#38388: Re: 簡單題


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [122.116.111.175]
最後登入時間 :
2024-11-10 18:46:03
d235. 10929 - You can say 11 -- UVa10929 | From: [118.166.140.199] | 發表日期 : 2023-11-18 01:19

    cnt += (((i & 1) << 1) - 1) * (str[i] - '0');

 

這是希望別人看懂呢? 還是不希望別人看懂呢?

就是要玩個位運算...我喜歡XD

在你的程式架構下,我也來弄個難懂的
const int L = str.length()
int cnt = (L>>1) - ((L&1)?48:0);
for(int i=0; i<L; i++)
    cnt += -(i&1) ^ str[i];

 
ZeroJudge Forum