Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Globalization;
- using System.Threading;
- public class BitShooter
- {
- public static void Main()
- {
- Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
- checked
- {
- ulong number = ulong.Parse(Console.ReadLine());
- int leftBits = 0;
- int rightBits = 0;
- if (number > 0)
- {
- for (int i = 0; i < 3; i++)
- {
- string[] inputStr = Console.ReadLine().Split(new char[] { ' ', ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
- int center = int.Parse(inputStr[0]);
- int size = int.Parse(inputStr[1]);
- int damageMinBitPosition = center - (size / 2);
- if (damageMinBitPosition < 0)
- {
- damageMinBitPosition = 0;
- }
- int damageMaxBitPosition = center + (size / 2);
- if (damageMaxBitPosition > 63)
- {
- damageMaxBitPosition = 63;
- }
- int countBitsToChange = (damageMaxBitPosition - damageMinBitPosition) + 1;
- ulong bitMask = ((ulong)1 << countBitsToChange) - 1;
- bitMask <<= damageMinBitPosition;
- number &= ~bitMask;
- }
- for (int bits = 0; bits < 64; bits++)
- {
- int bitValue = (int)(number & 1);
- if (bits >= 32 && bitValue > 0)
- {
- leftBits++;
- }
- else if (bits < 32 && bitValue > 0)
- {
- rightBits++;
- }
- if (number == 0)
- {
- break;
- }
- number >>= 1;
- }
- }
- Console.WriteLine("left: {0}\nright: {1}", leftBits, rightBits);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement