#22336: _c++


joseph931023@gmail.com (洪偉涵)


#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 (林智仁)


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



#38377: Re: c++


liaojoy985@gmail.com (yay._______ __)


可以想成紀錄每個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