Сколько разных цифр встречается в большом шестнадцатеричном числе
Значение выражения 4^34 + 5 * 4^22 + 4^13 + 2 * 4^9 + 82 записали в 16-й системе счисления. Сколько разных цифр встречается в этой записи?
Мой код должен выводить цифры: 0, 1, 2, 4, 5, 8; но выводит все те же, кроме двойки.
double vr = Math.Pow(4, 34) +5 * Math.Pow(4, 22) + Math.Pow(4, 13) + 2
* Math.Pow(4, 9) + 82;
List<int> ints = new List<int>();
while (vr > 0)
{
ints.Add(Convert.ToInt32(vr % 16));
vr /= 16;
}
IEnumerable<int> chars2 = ints.Distinct();
foreach (int i in chars2)
{
Console.WriteLine(i);
}
Ответы (3 шт):
Автор решения: MBo
→ Ссылка
Переписываем так, где h=16
4^34 + 5 * 4^22 + 4^13 + 2 * 4^9 + 82
1 * h^17 + 5 * h^11 + 4 * h^6 + 8 * h^4 + 5 * h + 2
И видим все ненулевые цифры
Автор решения: Daniil Loban
→ Ссылка
C большим числом что-то не вышло,
test.cs(9,36): error CS1021: Integral constant is too large
using System;
using System.Linq;
using System.Collections.Generic;
class App
{
public static void Main(string[] args)
{
var vr = 0x1000500004080052;
List<int> ints = new List<int>();
while (vr != 0)
{
ints.Add(Convert.ToInt32(vr & 0xF));
vr >>= 4;
}
IEnumerable<int> chars2 = ints.Distinct();
foreach (int i in chars2)
{
Console.WriteLine(i);
}
}
}
2 5 0 8 4 1
Автор решения: pechenb
→ Ссылка
С использованием большого целого числа:
BigInteger vr = BigInteger.Pow(4, 34) + 5 * BigInteger.Pow(4, 22) +
BigInteger.Pow(4, 13) + 2 * BigInteger.Pow(4, 9) + 82;
List<BigInteger> hexNumbers = new List<BigInteger>();
while (vr > 0)
{
hexNumbers.Add(vr % 16);
vr /= 16;
}
IEnumerable<BigInteger> uniqueNumbers = hexNumbers.Distinct();
foreach (int number in uniqueNumbers)
{
Console.Write(number);
}
250841