Условие задачи:
На входе программы имеется натуральное число [latex] n (n > 99) [/latex]. Нужно вывести третью цифру (разряд сотен) числа [latex] n [/latex].
Входные данные:
Натуральное число [latex] n (n > 99) [/latex].
Выходные данные:
Цифра разряда сотен числа [latex] n [/latex].
Тесты:
№ | Ввод | Вывод |
---|---|---|
1 | 512 | 5 |
2 | 7826 | 8 |
3 | 90285 | 2 |
4 | 12479056 | 0 |
5 | 18942793357 | 3 |
Код программы:
1 2 3 4 5 6 7 8 9 |
#include <iostream> using namespace std; int main() { long long n; cin >> n; cout >> (n / 100) % 10; return 0; } |
Решение:
Для нахождения третьей цифры с конца данного числа, выполним ряд следующих действий:
- разделим данное натуральное число на [latex] 100 [/latex] и получаем количество сотен в числе: либо однозначное число (цифру), либо многозначное;
- так как мы хотим получить простую сотню (однозначное число), мы находим остаток от полученного числа при делении на [latex] 10 [/latex].
Ссылки:
Задача на E-Olymp
Решение задачи на ideone
Засчитанное решение на E-Olymp
Обратите внимание , что в коде вместо $>$ и $<$ стоят их html коды.
Из ссылки надо убрать кириллицу.
Не заметила, спасибо большое)
«Нужно вывести третью дело цифру (разряд сотен)». Слова «дело» нету в условии на e-olymp. И стоит добавить ссылку с засчитанным решением.
Если быть честным, то когда Катя писала статью, там это слово ещё было 🙂
Всё бы не плохо, но пояснение… Вы описываете решение, как колдовской наговор. Без смысла и причин. Вы пишите «для того, чтобы найти цифру, указывающую на разряд сотен, нужно заданное натуральное число разделить на 100». Зачем? Что мы хотим получить?
Понимаете, есть еще несколько способов найти число сотен в десятичной записи числа без того, чтобы делить его на 100. Можно перевести в строку и найти третий с права символ. Можно взять остаток от деления на 1000 и написать 9 условных операторов. И мало ли еще какие выверты придут людям в голову.
Нужно объяснить в чем Ваша идея. Вы же просто пересказали свой код.
P.S. А как Вы сделали овал на портрете? Во всяком случае Вы что-то с этим натворили, поскольку в комментариях Ваш портрет не просто не отображается, а приводит к сбою. Поздравляю, Вы нашли дыру в Вордпресс или gravatar.com.
Предлагаю здесь в комментариях писать самые изощренные (или извращенные?) решения этой задачи. Интересно, у кого фантазия найдет, что-то принципиально отличное от очевидных:
1. Остаток от деления на 10, после деления на 100 (см. Катин код).
2. Читаем не как число, а как строку и выводим третий справа символ — никаких арифметически действий и быстрое чтение без преобразования в число.
3. Берем остаток от деления на 1000 и делим его на 100 (восемь «ифов» вместо деления не считается) — Нет преимуществ перед Катиным решением.
4. Читаем посимвольно, запоминая всегда три последних прочитанных символа — работает даже для чисел, десятичная запись которых не помещается в string, экономия памяти. Такой прием называется «циклический буфер» или «кольцевое чтение».
Какие еще идеи?