Найти количество цифр в заданном числе - C (СИ)
Формулировка задачи:
Добрый вечер, народ.
Помогите решить задачку:
Но есть одна проблема, самое главное в этой задаче не результат, а скорость!!!
Не знаю как лучше всего добиться производительности.
Вычислить количество цифр целого неотрицательного числа n.
Входные данные:
Одно целое неотрицательное число n от 0 до 2 * (10 ^ 9) включительно
Выходные данные:
Количество цифр в числе n.
Решение задачи: «Найти количество цифр в заданном числе»
textual
Листинг программы
#include <iostream> using namespace std; int numDigits(long int x) { int cnt = 1; if (x >= 100000000) { cnt += 8; x /= 100000000; } if (x >= 10000) { cnt += 4; x /= 10000; } if (x >= 100) { cnt += 2; x /= 100; } if (x >= 10) cnt++; return cnt; } int main() { long x; cin >> x; cout << numDigits(x); }
Объяснение кода листинга программы
В этом коде функция numDigits() принимает целое число в качестве аргумента и возвращает количество цифр в этом числе. Алгоритм работает следующим образом:
- Переменная cnt инициализируется значением 1, которое соответствует количеству цифр в числе 1.
- Если число x больше или равно 100000000, то к cnt добавляется 8, и число x делится на 100000000. Это позволяет учесть числа от 100000000 до 999999999, которые имеют 8 цифр.
- Если число x больше или равно 10000, то к cnt добавляется 4, и число x делится на 10000. Это позволяет учесть числа от 10000 до 99999, которые имеют 4 цифры.
- Если число x больше или равно 100, то к cnt добавляется 2, и число x делится на 100. Это позволяет учесть числа от 100 до 999, которые имеют 2 или 3 цифры.
- Если число x больше или равно 10, то к cnt добавляется 1, так как числа от 10 до 99 имеют 1 цифру.
- Возвращается значение cnt, которое и есть количество цифр в числе x. В функции main() вводится число x с помощью ввода с клавиатуры, а затем выводится результат работы функции numDigits() с помощью вывода на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д