Найти количество цифр в заданном числе - 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() с помощью вывода на экран.