У меня есть набор чисел: 1,2,4,8,16,32,64 и т. Д.Получить детей данного родителя
Теперь Дано число скажем 44, я должен определить, что у него есть дети 32, 8 и 4. (32 + 8 + 4 = 44)
То, что я до сих пор является следующий код:
public static long[] GetBTreeChildren(long? parentMask)
{
var branches = new List<long>();
if (parentMask == null) return branches.ToArray();
double currentValue = (double)parentMask;
while (currentValue > 0D)
{
double power = Math.Floor(Math.Log(currentValue, 2.0D));
double exponentResult = Math.Pow(2, power);
branches.Add((long)exponentResult);
currentValue -= exponentResult;
}
return branches.ToArray();
}
Но приведенный выше код не работает, когда заданное число очень велико (например 36028797018963967)
Я использую VS2012 (C#).
Вы попробовали BigInteger? –
Нет BigInteger в C# – Kymel15