iliqnvidenov

Untitled

Mar 30th, 2015
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.57 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. class Program
  8. {
  9.     static void Main()
  10.     {
  11.         uint n = uint.Parse(Console.ReadLine());
  12.         bool finalISNull = false;
  13.         while (true)
  14.         {
  15.             string whichBit = Console.ReadLine();
  16.             if (whichBit == "Odd")
  17.             {
  18.                 uint mask = 1 << 30;
  19.                 uint newNum = 0;
  20.                 for (int i = 0; i < 31; i += 2, mask >>= 2)
  21.                 {
  22.                     if ((n & mask) > 0)
  23.                     {
  24.                         newNum |= 1;
  25.                         if (i < 30)
  26.                         {
  27.                             newNum <<= 1;
  28.                         }
  29.                         else
  30.                         {
  31.                             finalISNull = false;
  32.                         }
  33.                     }
  34.                     else
  35.                     {
  36.                         newNum <<= 1;
  37.                         finalISNull = true;
  38.                     }
  39.                 }
  40.                 n = newNum;
  41.                 if (finalISNull)
  42.                 {
  43.                     n >>= 1;
  44.                 }
  45.             }
  46.             else if (whichBit == "Even")
  47.             {
  48.                 uint mask = 1u << 31;
  49.                 uint newNum = 0;
  50.                 for (int i = 0; i < 32; i += 2, mask >>= 2)
  51.                 {
  52.                     if ((n & mask) > 0)
  53.                     {
  54.                         newNum |= 1;
  55.                         if (i < 31)
  56.                         {
  57.                             newNum <<= 1;
  58.                         }
  59.                         else
  60.                         {
  61.                             finalISNull = false;
  62.                         }
  63.  
  64.                     }
  65.                     else
  66.                     {
  67.                         newNum <<= 1;
  68.                         finalISNull = true;
  69.                     }
  70.                 }
  71.                 n = newNum;
  72.                 if (finalISNull)
  73.                 {
  74.                     n >>= 1;
  75.                 }
  76.             }
  77.             else
  78.             {
  79.                 int countONBits = 0;
  80.                 uint mask = 1;
  81.                 for (int i = 0; i < 32; i++, mask <<= 1)
  82.                 {
  83.                     if ((mask & n) > 0)
  84.                     {
  85.                         countONBits++;
  86.                     }
  87.                 }
  88.                 Console.WriteLine("{0} -> {1}", n, countONBits);
  89.                 return;
  90.             }
  91.         }
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment