Beispiel #1
0
        static ulong dfs()
        {
            var kb    = K.ToBitArray();
            var start = -1;

            for (int i = 63; i >= 0; i--)
            {
                if (kb[i])
                {
                    start = i;
                    break;
                }
            }

            kb = new BitArray(64);
            for (int i = start; i >= 0; i--)
            {
                var trueNum = Ab.Count(ab => ab[i]);
                kb[i] = trueNum * 2 <= Ab.Count;
                if (kb[i] && kb.ToUInt64() > K)
                {
                    kb[i] = false;
                }
            }

            ulong k   = kb.ToUInt64();
            ulong sum = 0;

            foreach (var a in A)
            {
                sum += a ^ k;
            }

            return(sum);
        }