Advertisement
GogoK

05.WiggleWiggle

Nov 29th, 2015
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.42 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. class WiggleWiggle
  5. {
  6.     static void Main()
  7.     {
  8.         ulong[] input = Console.ReadLine().Split().Select(ulong.Parse).ToArray();
  9.  
  10.         int firstNum = 0;
  11.         int secNumb = 1;
  12.         int rounds = input.Length / 2;
  13.        
  14.         while (rounds > 0)
  15.         {
  16.             for (int i = 0; i < 64; i += 2)
  17.             {
  18.                 ulong firstBit = input[firstNum] & ((ulong)1 << i);
  19.                 ulong secondBit = input[secNumb] & ((ulong)1 << i);
  20.  
  21.                 if (firstBit != secondBit)
  22.                 {
  23.                     input[firstNum] ^= (ulong)1 << i;
  24.                     input[secNumb] ^= (ulong)1 << i;
  25.                 }
  26.             }
  27.  
  28.             for (int i = 0; i < 63; i++)
  29.             {
  30.                 input[firstNum] ^= (ulong)1 << i;
  31.                 input[secNumb] ^= (ulong)1 << i;
  32.             }
  33.  
  34.             firstNum += 2;
  35.             secNumb += 2;
  36.             rounds--;
  37.         }
  38.  
  39.         foreach (var number in input)
  40.         {
  41.             string bin = UlongToString(number);
  42.             Console.WriteLine("{0} {1}", number, bin);
  43.         }
  44.     }
  45.  
  46.     static string UlongToString(ulong number)
  47.     {
  48.         string output = string.Empty;
  49.         for (int i = 0; i < 63; i++)
  50.         {
  51.             ulong result = (number & ((ulong)1 << i)) >> i;
  52.             output = result + output;
  53.         }
  54.         return output;
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement