Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- class Program
- {
- static void Main()
- {
- UInt64 number = UInt64.Parse(Console.ReadLine());
- for (int i = 63; i >= 2; i--)
- {
- if (GetBit(number, i) == 0 && GetBit(number, i - 1) == 0 && GetBit (number, i - 2) == 0)
- {
- number = SetBit(number, i, 1);
- number = SetBit(number, i - 1, 1);
- number = SetBit(number, i - 2, 1);
- i -= 2;
- continue;
- }
- else if (GetBit(number, i) == 1 && GetBit(number, i - 1) == 1 && GetBit (number, i - 2) == 1)
- {
- number = SetBit(number, i, 0);
- number = SetBit(number, i - 1, 0);
- number = SetBit(number, i - 2, 0);
- i -= 2;
- }
- }
- Console.WriteLine(number);
- }
- static UInt64 GetBit(UInt64 number, int position)
- {
- UInt64 bit = (number >> position) & 1;
- return bit;
- }
- static UInt64 SetBit(UInt64 number, int position, int bit)
- {
- UInt64 mask = (UInt64)1 << position;
- if (bit == 1)
- {
- number = number | mask;
- }
- else
- {
- number = number & (~mask);
- }
- return number;
- }
- //static int ExchangeBits(int number, int position1, int position2)
- //{
- // int bit1 = GetBit(number, position1);
- // int bit2 = GetBit(number, position2);
- // number = SetBit(number, bit1, position2);
- // number = SetBit(number, bit2, position1);
- // return number;
- //}
- }
Advertisement
Add Comment
Please, Sign In to add comment