Advertisement
tockata

05_ChangeEvenBits

Jul 27th, 2014
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.22 KB | None | 0 0
  1. using System;
  2.  
  3. class ChangeEvenBits
  4. {
  5.     static void Main()
  6.     {
  7.         int n = int.Parse(Console.ReadLine());
  8.         int[] numbers = new int[n];
  9.         int bitsChanged = 0;
  10.  
  11.         for (int i = 0; i < n; i++)
  12.         {
  13.             numbers[i] = int.Parse(Console.ReadLine());
  14.         }
  15.         ulong numberToChange = ulong.Parse(Console.ReadLine());
  16.  
  17.         for (int i = 0; i < numbers.Length; i++)
  18.         {
  19.             int bitsCount = 0;
  20.             int bitToChange = 0;
  21.             if (numbers[i] == 0)
  22.             {
  23.                 bitsCount = 1;
  24.             }
  25.             else
  26.             {
  27.                 while (numbers[i] > 0)
  28.                 {
  29.                     bitsCount++;
  30.                     numbers[i] >>= 1;
  31.                 }
  32.             }
  33.             for (int j = 0; j < bitsCount; j++)
  34.             {
  35.                 int bit = (int)numberToChange & (1 << bitToChange);
  36.                 if (bit == 0)
  37.                 {
  38.                     numberToChange |= (ulong)1 << bitToChange;
  39.                     bitsChanged++;
  40.                 }
  41.                 bitToChange += 2;
  42.             }
  43.         }
  44.         Console.WriteLine(numberToChange);
  45.         Console.WriteLine(bitsChanged);
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement