UniLecs #117. Снова степень

UniLecs #117. Снова степень

UniLecs
степень

Задача: дано число k^k. Необходимо определить 1ю цифру этого числа.

Входные данные: k - натуральное число от 1 до 10^4.

Вывод: 1я цифра числа k^k

Пример: k = 3

Answer: 2 (3^3 = 27)

Идея: кол-во цифр числа N (count) можно найти с помощью логарифма. А именно:

Сount = [lg(N)] + 1 ([] - округляем в меньшую сторону)

Давайте рассмотрим след.число T = (k^k / 10^count) * 10 = (10^(k * lg(k)) / 10^count) * 10 = 10^(k*lg(k) + 1 - count). По сути мы делили наше исходное число на 10 в степени кол-ва цифр исх.числа и потом домножили на 10. Поэтому очевидно, что 1 <= T <= 10. А также заметим, что целая часть числа T равна 1й цифре числа k^k. 

Рассмотрим пример: K = 3. 3^3 = 27. count = [3*lg(3)] + 1 = 2. Число T = (3^3 / 10^3) * 10 = 10^(3*lg(3) + 1 - 2) = 10^(0.4313) = 2.699

Реализация:

C#

https://gist.github.com/unilecs/60ae61f0db47f793af680ab4e183440b

Test:

https://dotnetfiddle.net/0Dvsp2

Report Page