Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace BitFlipperWithStrings
- {
- class BitFlipperWithStrings
- {
- static void Main()
- {
- ulong number = ulong.Parse(Console.ReadLine());
- string bitNumber = toBits(number);
- char[] bitArr = bitNumber.ToCharArray();
- int count = 1;
- int i = 0;
- while (i < 64)
- {
- if (count == 3 && bitArr[i] == '1')
- {
- bitArr[i] = '0';
- bitArr[i - 1] = '0';
- bitArr[i - 2] = '0';
- count = 1;
- i++;
- continue;
- }
- else if (count == 3 && bitArr[i] == '0')
- {
- bitArr[i] = '1';
- bitArr[i - 1] = '1';
- bitArr[i - 2] = '1';
- count = 1;
- i++;
- continue;
- }
- if (i <= 62 && bitArr[i] == bitArr[i + 1])
- {
- count++;
- }
- else
- {
- count = 1;
- }
- i++;
- }
- ulong num64 = Convert.ToUInt64(new string(bitArr), 2);
- //Console.WriteLine(new string(bitArr));
- Console.WriteLine(num64);
- }
- static string toBits(ulong number)
- {
- string bitNumber = "";
- for (int i = 63; i >= 0; i--)
- {
- ulong bit = (number >> i) & 1u;
- bitNumber += bit;
- }
- return bitNumber;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement