• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Iloma zerami kończy się dana liczba?

Object Storage Arubacloud
0 głosów
1,480 wizyt
pytanie zadane 14 listopada 2015 w C i C++ przez Kasia Motas Nowicjusz (150 p.)
edycja 14 listopada 2015 przez Kasia Motas

Pisze program który musi mi policzyć iloma zerami kończy się moja silnia :) Obmyśliłam już jak obliczyć silnie i to zapisałam ale mam problem z tym jak zapisać algorytm, prosiłabym o pomoc :) Oto moja dotychczasowa praca: http://wklej.org/id/1842150/ Prosze o Pomoc, a najlepiej próby zapisania tego algorytmu xd :))) laugh

 

6 odpowiedzi

+1 głos
odpowiedź 14 listopada 2015 przez niezalogowany
wybrane 14 listopada 2015 przez Kasia Motas
 
Najlepsza

Jeżeli masz policzyć zera na końcu to sprawa jest dość trywialna, bo każda liczba składająca z n cyfr (n>2) mająca na końcu 0 jest podzielna przez 10. Jak wspomniałaś należy policzyć ilość podzieleń liczby przez bez reszty.

Można pewnie to zrobić jakoś wydajniej, ale już nie mam siły myśleć dzisiaj, więc poniżej jest wersja naiwna:

int liczba = ...; // zmienna przechowująca jakąś wartość silnii
int counter = 0; // licznik zer

while (liczba % 10 == 0) // dopóki reszta z dzielenia wynosi 0
{
 liczba /= 10;
 counter++;
}

cout << "Ilość zer wynosi: " << counter << endl;

W razie niejasności pisz.

komentarz 14 listopada 2015 przez Kasia Motas Nowicjusz (150 p.)
Dziękuje Bardzo :))))) działa :)))
komentarz 14 listopada 2015 przez niezalogowany
Tego się spodziewałem, ale bardzie mnie ciekawi czy rozumiesz dlaczego działa, bo właśnie o to chodzi w programowaniu: aby rozumieć jak coś działa, a nie pisać randomowy kod, który zadziała.
komentarz 14 listopada 2015 przez Kasia Motas Nowicjusz (150 p.)
Rozumiem i to bardzo dobrze :) sama nie napisałam tego ze względu na to że się dopiero ucze programować i właśnie przez mój brak wiedzy napisałam tego posta :) jestem dobrym matematykiem :) miałam tylko problem z zapisem tego w programie xd :)
komentarz 14 listopada 2015 przez niezalogowany
Różni ludzie się tutaj trafiają, wolałem się upewnić ;)
komentarz 14 listopada 2015 przez Kasia Motas Nowicjusz (150 p.)
Nie dziwie się xd :D jeszcze raz dziękuje za pomoc :)))
0 głosów
odpowiedź 14 listopada 2015 przez Luna Cognita Dyskutant (8,130 p.)
#include <cstdlib>
#include <iostream>
using namespace std;
 
int main()
{
  unsigned int n; //z tej liczby będziemy liczyć silnię
  long long silnia = 1; //ta zmienna będzie przechowywać wynik
 
  cout<<"Podaj n: ";
  cin>>n;
 
  for(int i=n;i>1;i--)
    silnia*=i; //lub silnia = silnia * i
 
  cout<<n<<"! = "<<silnia<<endl;
 
  system("pause");
  return 0;
}
 

 

komentarz 14 listopada 2015 przez Kasia Motas Nowicjusz (150 p.)

chodzi mi o to że muszę policzyć iloma zerami kończy sie moja silnia, czyli jak mam np silnie 23! to rozpisem jej jest liczba: 862453760   i musze obliczyć ile ma tych zer na końcu ale nie wiem jak to zapisać :/  sad

0 głosów
odpowiedź 14 listopada 2015 przez PietaS Bywalec (2,570 p.)
Możesz rozwinąć swoje pytanie
komentarz 14 listopada 2015 przez Kasia Motas Nowicjusz (150 p.)
Pisze program na projekt z informatyki, taki program : http://pl.spoj.com/problems/KART/ . I pierwszą część już napisałam, to znaczy obliczyłam Silnie z liczby N ale muszę również policzyć ile zer na końcu ma rozwinięcie liczby N i nie mam zielonego pojęcia jak to zapisać, ktoś mi poradził żeby sprawdzić czy dzieli sie przez 10 razy i ile razy do tego dochodzi, ale nie potrafię tego zapisać
komentarz 14 listopada 2015 przez furas Maniak (53,800 p.)
if( liczb % 10 == 0 ) printf("dzieli się przez 10")
0 głosów
odpowiedź 14 listopada 2015 przez furas Maniak (53,800 p.)
Zadanie było kilka razy na forum.

Problem może być taki, że wyliczona silnia nie zmieści się w dostępnym typie danych więc warto po każdym mnożeniu sprawdzać czy dzieli się przez 10 i obcinać końcowe zero (czyli brać wynik dzielenia) bez obawy o poprawność dalszych obliczeń.
0 głosów
odpowiedź 14 listopada 2015 przez Szahid Pasjonat (20,930 p.)
Widze że uzyskałeś już odpowiedź na swoje pytanie ale jakbyś miał chwilę wolnego czasu to ramach treningu lub dla przyjemności możesz rozwiązać to zadanie funkcją  rfind().

 

Chociaż to jest chyba dużo mniej eleganckie rozwiązanie :)
komentarz 14 listopada 2015 przez Kasia Motas Nowicjusz (150 p.)
Oj ja dopiero zaczynam programowac, jestem na podstawach podstaw xd także z bardziej złorzoną funkcją mogłabym sobie nie poradzić :)
komentarz 14 listopada 2015 przez Szahid Pasjonat (20,930 p.)
To wcale nie jest takie złożone. I podsunąłem Ci ten pomysł właśnie dlatego że założyłem że się uczysz :)

Poznasz w ten sposób ciekawą funkcje.

Tak na wszelki wypadek zostawie Ci link do niej.

http://cpp0x.pl/kursy/Kurs-C++/Poziom-3/Wyszukiwanie-frazy-w-tekscie/352
0 głosów
odpowiedź 14 listopada 2015 przez PietaS Bywalec (2,570 p.)
Wszystko jest opisane na Wikipedii https://pl.m.wikipedia.org/wiki/Silnia

Podobne pytania

0 głosów
1 odpowiedź 916 wizyt
0 głosów
0 odpowiedzi 46 wizyt
pytanie zadane 16 stycznia 2020 w Programowanie przez chrystian Gaduła (4,780 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...