1249. Первая цифра степени

 

Вам предлагается очень простая задача: на какую цифру начинается число nn?

 

Вход. Состоит из нескольких тестов. Каждый тест расположен в отдельной строке и содержит единственное число n (1 ≤ n ≤ 109).

 

Выход. Для каждого теста выведите в отдельной строке первую цифру искомого результата.

 

Пример входа

Пример выхода

3

4

2

2

 

 

РЕШЕНИЕ

математика

 

Анализ алгоритма

Количество цифр числа a равно . Следовательно число nn содержит len =  десятичных цифр. Рассмотрим число A =  =  = . Очевидно, что 1 ≤ A < 10. При этом целая часть числа A равна первой цифре числа nn.

Вычисляем десятичный логарифм числа A. Он равен ost = nlgn + 1 – len. Тогда первая цифра числа nn равна .

 

Пример

Пусть n = 4. Тогда 44 = 256, len =  = 3. Число А равно  =  =  = 2.56.

 

Реализация алгоритма

Основной цикл программы.

 

while(scanf("%lld",&n) == 1)

{

  lgg = n * log10((double)n);

 

Значение len равно количеству цифр в числе nn.

 

  len = (long long)(lgg + 1e-7) + 1;

  ost = lgg + 1 - len;

  res = (long long)(pow(10.0,ost) + 1e-7);

  printf("%lld\n",res);

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

     Scanner con = new Scanner(System.in);   

     while(con.hasNextLong())

     {

       long n = con.nextLong();

       double lgg = n * Math.log10(n);

       long len = (long)(lgg) + 1; // number of digits in n^n

       double ost = lgg + 1 - len;

       long res = (long)(Math.pow(10.0,ost));

       System.out.println(res);

     }

  }

}