#22336: c++


joseph931023@gmail.com (洪偉涵)

學校 : 臺北市立建國高級中學
編號 : 123870
來源 : [140.112.16.145]
最後登入時間 :
2020-08-27 14:50:10
d244. 一堆石頭 | From: [140.112.16.145] | 發表日期 : 2020-08-25 16:54

#include <iostream> 
#include <math.h>

using namespace std;

int main(){
    int temp, n, r0=0, r1=0;
    while (cin >> n){
        r1 = r1 | (r0 & n);
        r0 = r0 ^ n;
        temp = r0 & r1;
        r0 = r0 ^ temp;
        r1 = r1 ^ temp;
    }
    cout << r1; 
    return (0);
}
 
#26223: Re:c++


zhirenlin47@gmail.com (林智仁)

學校 : 不指定學校
編號 : 151670
來源 : [36.227.76.71]
最後登入時間 :
2021-05-04 17:41:58
d244. 一堆石頭 | From: [118.160.1.96] | 發表日期 : 2021-07-25 01:35

看不太懂,有高手可以解釋嗎



 
#38377: Re: c++


liaojoy985@gmail.com (yay._______ __)

學校 : 不指定學校
編號 : 162320
來源 : [60.248.91.97]
最後登入時間 :
2023-11-02 20:49:18
d244. 一堆石頭 | From: [223.136.71.244] | 發表日期 : 2023-11-17 01:56

可以想成紀錄每個bit出現幾次,一旦出現三次就歸0,r0和r1是counter的兩個bit

r1 = r1 | (r0 & n);
r0 = r0 ^ n;

這兩行是把counter + 1

temp = r0 & r1;
r0 = r0 ^ temp;
r1 = r1 ^ temp;

這三行是把counter到3的歸0

 
ZeroJudge Forum