• Даны целое число k (1<= k<= 150) и последовательность цифр
    101102103...149150, в которой выписаны подряд все трехзначные числа от 101
    до 150.
    Определить k-ю цифру, если известно, что:
    k — число, кратное трем;
    k — одно из чисел 1, 4, 7, ...;
    k — одно из чисел 2, 5, 8, ...
    Примечание
    Величины строкового типа не использовать.

Ответы 1

  • #Ruby 2

    def getNumberByPosition(start_num, end_num, k, n = 3)

       # p [start_num, end_num, k, n]

       if not start_num.between?(10**(n - 1),10**n - 1) or not end_num.between?(10**(n - 1),10**n - 1) then return end

       s = ""

       for  i in start_num..end_num

           s += i.to_s()

       end

       number = start_num + (k-1) / n

       if number > end_num

           puts "Выход за пределы"

           return

       end

       # p number

       upper_limit = n + 1 - ((k % n == 0) ? n : k % n)

       number = number % (10**upper_limit)

       # p [number, 10**upper_limit, upper_limit]

       low_limit = upper_limit - 1

       number = number / (10**low_limit)

       # p [number, 10**low_limit, low_limit]

       puts "#{number} = #{s[k-1]}"

    end

    getNumberByPosition(101,150,20,3)

    getNumberByPosition(101,150,21,3)

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years