Advertisement
dim4o

ChangeEvenBits

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