Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class DancingBitsSecond
- {
- static void Main()
- {
- int k = int.Parse(Console.ReadLine());
- int n = int.Parse(Console.ReadLine());
- int number = 0;
- int bit = 2;
- int count = 0;
- int bigCount = 0;
- int mask = 0;
- int checker = 0;
- for (int i = 0; i < n; i++)
- {
- number = int.Parse(Console.ReadLine());
- // reverse the bits
- while (number != 0)
- {
- mask <<= 1;
- mask |= (number & 1);
- if (mask == 0)
- {
- mask = 1;
- checker = 1;
- }
- number >>= 1;
- }
- number = mask;
- mask = 0;
- // check for dancing bits
- if(bit == 2)
- {
- bit = number & 1;
- }
- while (number != 0)
- {
- if (checker == 1 && number == 1)
- {
- if ((number & 1) != bit)
- {
- count++;
- number >>= 1;
- }
- else
- {
- count = 1;
- bit = 0;
- number >>= 1;
- }
- if (count == k)
- {
- bigCount++;
- }
- if (count == k + 1)
- {
- bigCount--;
- }
- checker = 0;
- }
- else
- {
- if ((number & 1) == bit)
- {
- count++;
- number >>= 1;
- }
- else
- {
- count = 1;
- bit = (number & 1);
- number >>= 1;
- }
- if (count == k)
- {
- bigCount++;
- }
- if (count == k + 1)
- {
- bigCount--;
- }
- }
- }
- checker = 0;
- }
- Console.WriteLine(bigCount);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement