Za pomocą języka C++ wyznacz liczbę cyfr liczby całkowitej P. Proszę o pełne i bezbłędne odpowiedzi + wyjaśnienie!
Zakres P (1<=P<=1 000 000 000)
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
To zadanie można wykonać na wielek sposobów, najłatwiejszym z nich jest użycie logarytmów.
Zacznijmy od napisania kodu, a zaraz go wytłumaczę:
#include <iostream>
#include <cmath>
int num_length(unsigned long long number)
{
return static_cast<int>(log10(number)+1);
}
int main()
{
unsigned long long n;
std::cin >> n;
std::cout << num_length(n);
}
Dołączamy `cmath`, aby mieć dostęp do `log10`, `static_cast<int>` powoduje rzutowanie wyniku na `int` (zaokrąglenie go).
No i teraz metoda działania:
Weźmy liczbę np.`1024` i policzmy dla niej logarytm o podstawie 10:
Dodajmy do niej liczbę `1` i otrzymamy długość liczby w zapisie dziesiętnym.
Spróbujmy dla innej liczby:
czyli wynik się zgadza (6 cyfr w zapisie dziesiętnym).
Z tej zależności korzystamy w kodzie.
Jeżeli rozumiesz logarytmy, nie powinieneś mieć problemów ze zrozumieniem tej metody.