Thứ Hai, 22 tháng 4, 2019

Cho 1 mang, cac phan tu xuat hien 3 lan, 1 phan tu xuat hien 1 lan. In ra 1 phan tu do

- chuyển các số sang cơ số 3
- định nghĩa phép XOR_base3 (x,y) = (x+y)%3 , với x,y là bit trong base 3 ( gồm 0,1,2 )
- cuối cùng XOR_base3 tất cả các số trong dãy, thu được số cần tìm

/*************************/
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int Solution(const vector<int> &A)
  5. {
  6. int ones = 0, twos = 0;
  7. for(int i = 0; i < A.size(); i++)
  8. {
  9. ones = (ones ^ A[i]) & ~twos;
  10. twos = (twos ^ A[i]) & ~ones;
  11. }
  12. return ones;
  13. }
  14.  
  15. int main()
  16. {
  17. vector<int> a = {6, 1, 3, 3, 3, 6, 6};
  18. cout << Solution(a);
  19. return 0;
  20. }

Không có nhận xét nào:

Đăng nhận xét