Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2014
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. using System;
  2. class BitFlipper
  3. {
  4. static void Main()
  5. {
  6. ulong number = ulong.Parse(Console.ReadLine());
  7. ulong [] mask = new ulong[64];
  8. int [] pos = new int[64];
  9. ulong [] bitValue = new ulong[64];
  10.  
  11. int i;
  12. for (i = 63; i >= 0; i--)
  13. {
  14. //getting bit values
  15. pos[i] = i;
  16. mask[i] = 1ul << pos[i];
  17. bitValue[i] = (ulong)(number & mask[i] ) >> pos[i];
  18. }
  19.  
  20. i = 63;
  21. while (i >= 2)
  22. {
  23.  
  24. if (bitValue[i] == 1 && bitValue[i-1] == 1 && bitValue[i-2] == 1)
  25. {
  26. number = (ulong)(number & (~ mask[i]));
  27. number = (ulong)(number & (~ mask[i-1]));
  28. number = (ulong)(number & (~ mask[i-2]));
  29. i = i-3;
  30. }
  31.  
  32. else if (bitValue[i] == 0 && bitValue[i-1] == 0 && bitValue[i-2] == 0)
  33. {
  34. number = (ulong)(number | mask[i]);
  35. number = (ulong)(number | mask[i-1]);
  36. number = (ulong)(number | mask[i-2]);
  37. i = i - 3;
  38. }
  39. else// if not 000 and not 111 next pos
  40. {
  41. i--;
  42. }
  43. }
  44. Console.WriteLine(number);
  45. }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement