Advertisement
ivanov_ivan

Wiggle Wiggle - 100/100

Nov 8th, 2015
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.28 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace WiggleWiggle
  8.     {
  9.     class WiggleWiggle
  10.         {
  11.         static void Main()
  12.             {
  13.             //input
  14.             string[] inputNumbers = Console.ReadLine().Split(' ');
  15.             long[] numbers = new long[inputNumbers.Length];
  16.             for (int i = 0; i < inputNumbers.Length; i++)
  17.                 {
  18.                 numbers[i] = long.Parse(inputNumbers[i]);
  19.                 }
  20.             //Calculation
  21.             for (int i = 0; i < inputNumbers.Length; i += 2)
  22.                 {
  23.                 long bitOnEvenPositionFirstN = 0;
  24.                 long bitOnEvenPositionSecondN = 0;
  25.                 //long evenBitsFirstNumber = 0;
  26.                 //long evenBitsSecondNumber = 0;
  27.                 for (int j = 0; j < 64; j += 2)
  28.                     {
  29.                     bitOnEvenPositionFirstN = 1L & (numbers[i] >> (j));
  30.                     bitOnEvenPositionSecondN = 1L & (numbers[i + 1] >> (j));
  31.                     if (bitOnEvenPositionFirstN == bitOnEvenPositionSecondN)
  32.                         {
  33.                         continue;
  34.                         }
  35.                     else
  36.                         {
  37.                         if (bitOnEvenPositionFirstN > 0)
  38.                             {
  39.                             numbers[i] &= ~(bitOnEvenPositionFirstN << j);
  40.                             numbers[i + 1] |= bitOnEvenPositionFirstN << j;
  41.                             }
  42.                         else
  43.                             {
  44.  
  45.                             numbers[i + 1] &= ~(bitOnEvenPositionSecondN << j);
  46.                             numbers[i] |= bitOnEvenPositionSecondN << j;
  47.                             }
  48.                         }
  49.                     }
  50.                 numbers[i] = ~numbers[i];
  51.                 numbers[i+1] = ~numbers[i+1];
  52.                 numbers[i] ^= 1L << 63;
  53.                 numbers[i+1] ^= 1L << 63;
  54.                 //Output
  55.                 Console.WriteLine($"{numbers[i]} {Convert.ToString(numbers[i], 2).PadLeft(63, '0')}");
  56.                 Console.WriteLine($"{numbers[i + 1]} {Convert.ToString(numbers[i + 1], 2).PadLeft(63, '0')}");
  57.                 }
  58.  
  59.             }
  60.         }
  61.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement