Advertisement
Filkolev

Change Even Bits

Jul 26th, 2014
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.44 KB | None | 0 0
  1. using System;
  2.  
  3. class ChangeEvenBits
  4. {
  5.     static void Main()
  6.     {
  7.         int numberOfInputs = int.Parse(Console.ReadLine());
  8.  
  9.         int[] numbers = new int[numberOfInputs];
  10.  
  11.         for (int i = 0; i < numberOfInputs; i++)
  12.         {
  13.             numbers[i] = int.Parse(Console.ReadLine());
  14.         }
  15.  
  16.         int numberToChange = int.Parse(Console.ReadLine());
  17.  
  18.         int[] numberOfBits = new int[numberOfInputs];
  19.  
  20.         int bitsChanged = 0;
  21.  
  22.         for (int i = 0; i < numberOfInputs; i++)
  23.         {
  24.             numberOfBits[i] = getBitsCount(numbers[i]);
  25.         }
  26.  
  27.         for (int i = 0; i < numberOfInputs; i++)
  28.         {
  29.             int bitsToChange = numberOfBits[i];
  30.  
  31.             for (int j = 0; j < bitsToChange; j++)
  32.             {
  33.                 int currentBit = (numberToChange >> j*2) & 1;
  34.                 int mask = 1 << j*2;
  35.  
  36.                 if (currentBit == 0)
  37.                 {
  38.                     bitsChanged++;
  39.                     numberToChange = numberToChange | mask;
  40.                 }
  41.  
  42.             }
  43.         }
  44.  
  45.         Console.WriteLine(numberToChange);
  46.         Console.WriteLine(bitsChanged);
  47.  
  48.     }
  49.  
  50.     public static int getBitsCount(int number)
  51.     {
  52.         int count = 0;
  53.  
  54.         if (number == 0)
  55.         {
  56.             return 1;
  57.         }
  58.  
  59.         while (number > 0)
  60.         {
  61.             count++;
  62.             number = number >> 1;
  63.         }
  64.  
  65.         return count;
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement