Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Numerics;
- using System.Text;
- class Program
- {
- static void Main()
- {
- int n = int.Parse(Console.ReadLine());
- int[] numbers = new int[n];
- for (int i = 0; i < n; i++)
- {
- int toAddnumber = int.Parse(Console.ReadLine());
- numbers[i] = toAddnumber;
- }
- ulong L = ulong.Parse(Console.ReadLine());
- string LStr = UlongToString(L).PadLeft(64, '0'); ;
- //string LStr = Convert.ToString(L, 2).PadLeft(64,'0');
- char[] LChars = LStr.ToCharArray();
- int counterToBreak = 0;
- int bitsChanged = 0;
- for (int i = 0; i < numbers.Length; i++)
- {
- string numBinary = Convert.ToString(numbers[i], 2);
- for (int k = 63; k >= 0; k--)
- {
- if (counterToBreak >= numBinary.Length*2)
- {
- break;
- }
- if (counterToBreak % 2 == 0)
- {
- if (LChars[k] == '0')
- {
- bitsChanged++;
- LChars[k] = '1';
- }
- }
- counterToBreak++;
- }
- }
- string result = "";
- foreach (var digit in LChars)
- {
- result = result + digit;
- }
- Console.WriteLine(Convert.ToInt64(result, 2));
- Console.WriteLine(bitsChanged);
- }
- static string UlongToString(ulong value)
- {
- int ulongsize = sizeof(ulong) * 8;
- StringBuilder ret = new StringBuilder(ulongsize);
- for (int i = 0; i < ulongsize; i++)
- {
- ret.Insert(0, value & 0x1);
- value >>= 1;
- }
- return ret.ToString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement