В десятичной системе в 10 разрядах будет ровно (n + 1) цифр n.
- 10 степень 1 имеет 2 цифры.
- 10 power 2 имеет 3 цифры.
- 10 power 3 имеет 4 цифры.
- ...
- .....
- 10 power n имеет (n + 1) цифр.
Трюк здесь найти число десятичных цифр в показателе ' 2 '.
Сложный способ найти ответ состоит в том, чтобы фактически вычислить 2 power n и затем посчитайте количество цифр. Однако этот метод требует огромных вычислительных мощностей.
Более простой ответ заключается в разнице между 10 и 2.
Если в двоичной системе степень 2 возрастает на 1, то в десятичной системе повышаются цифры только по журналу 2 по основанию 10!
Для повышения n степеней в двоичном коде эквивалент будет (n * log2_base_10 + 1) в десятичной системе.
Рабочее решение:
public class Power {
public static long digit(long exp) {
return (long) (Math.ceil(exp * Math.log10(2)) + 1);
}
public static void main(String[] args) {
long exp = 50000000;
System.out.println("Number of digits in 2 power " + exp
+ " = " + Power.digit(50000000));
}
}
Выход:
$ javac Мощность. java
$ java Мощность
Количество цифр в 2 степени 50000000 = 15051501