Задача взята с сайта e-olymp.
Условие
Вычислить количество цифр целого неотрицательного числа [latex]n[/latex].
Входные данные
Одно не отрицательное целое число [latex]n[/latex] [latex](0<=n<=2*10^9)[/latex].
Выходные данные
Количество цифр в числе [latex]n[/latex].
Тесты
Число | Количество цифр |
1 | 1 |
20 | 2 |
123 | 3 |
Код
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> using namespace std; int main() { int x, n=1; cin >> x; while ((x/=10) > 0) n++; cout << n; return 0; } |
Решение
Сначала объявляем переменную [latex] n [/latex] для подсчета цифр в числе и присваиваем ей значение 1. Далее используем цикл while, проверкой которого ставим деление числа на 10 — так как тип числа int, это «отбрасывает» последнюю цифру в числе. Пока результат проверки истинный, инкриментируем n на 1.
Альтернативное решение с помощью десятичного логарифма
Сначала проверяется, не является ли введенное число нулем, так как невозможно посчитать любой логарифм от нуля. Если число отлично от нуля, находим десятичный логарифм от числа, прибавляем к нему единицу (что соответствует количеству цифр в числе). Берем целую часть от найденного, в случае, если число не кратно 10.
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <cmath> using namespace std; int main() { int x; cin >> x; cout << (x==0? 1: int (log10 (x) + 1)); return 0; } |
Хорошо. Только нужно добавить метки (tags) и привести для сравнения вариант в котором нет цикла, а используется логарифм по основанию 10.
И используйте, пожалуйста, latex для математических символов и формул. Например нужно [latex]n[/latex] вместо n.
Исправил, Игорь Евгеньевич.
Я засчитываю, но Вы всё же сделайте это [latex]0 \le n \le 2 \cdot {10}^{9}[/latex] в latex.