Advertisement
ScorpS

Dancing Bits

Dec 14th, 2012
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.46 KB | None | 0 0
  1. using System;
  2.  
  3. class DancingBitsSecond
  4. {
  5.     static void Main()
  6.     {
  7.  
  8.         int k = int.Parse(Console.ReadLine());
  9.         int n = int.Parse(Console.ReadLine());
  10.         int number = 0;
  11.         int bit = 2;
  12.         int count = 0;
  13.         int bigCount = 0;
  14.         int mask = 0;
  15.         int checker = 0;
  16.  
  17.         for (int i = 0; i < n; i++)
  18.         {
  19.             number = int.Parse(Console.ReadLine());
  20.             // reverse the bits
  21.             while (number != 0)
  22.             {
  23.                 mask <<= 1;
  24.                 mask |= (number & 1);
  25.                 if (mask == 0)
  26.                 {
  27.                     mask = 1;
  28.                     checker = 1;
  29.                 }
  30.                 number >>= 1;
  31.             }
  32.  
  33.             number = mask;
  34.             mask = 0;
  35.             // check for dancing bits
  36.             if(bit == 2)
  37.             {
  38.                 bit = number & 1;
  39.             }  
  40.             while (number != 0)
  41.             {
  42.                 if (checker == 1 && number == 1)
  43.                 {                  
  44.                     if ((number & 1) != bit)
  45.                     {
  46.                         count++;
  47.                         number >>= 1;
  48.                     }
  49.                     else
  50.                     {
  51.                         count = 1;
  52.                         bit = 0;
  53.                         number >>= 1;
  54.                     }
  55.  
  56.                     if (count == k)
  57.                     {
  58.                         bigCount++;
  59.                     }
  60.                     if (count == k + 1)
  61.                     {
  62.                         bigCount--;
  63.                     }
  64.                     checker = 0;                    
  65.                 }
  66.                 else
  67.                 {
  68.                     if ((number & 1) == bit)
  69.                     {
  70.                         count++;
  71.                         number >>= 1;
  72.                     }
  73.                     else
  74.                     {
  75.                         count = 1;
  76.                         bit = (number & 1);
  77.                         number >>= 1;
  78.                     }
  79.  
  80.                     if (count == k)
  81.                     {
  82.                         bigCount++;
  83.                     }
  84.                     if (count == k + 1)
  85.                     {
  86.                         bigCount--;
  87.                     }
  88.                 }
  89.             }
  90.             checker = 0;
  91.         }
  92.      
  93.         Console.WriteLine(bigCount);
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement