Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Factorial  (Citit de 2112 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
jurjstyle
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« : Martie 19, 2014, 21:45:28 »

Am clasica problema factorial si imi cere sa scriu functia care returneaza nr de zerouri.Problema e ca imi iese din timp...n<1000.000.000
Cod:
#include<iostream>
using namespace std;
 
int nz(int n)
{int nr=0,y,cnt;
  if(n<4) return nr;
   else for(int i=5,cnt=1;i<=n;i=i+5,++cnt)
               {if(cnt%5) ++nr;
                  else {y=i;
                          while(y%5==0)
                               y=y/5,++nr;
                        }
               }
 return nr;
}
Acum ma gandesc exista o metoda sa aflu nr de zerouri fara sa parcurg/sa parcurg in doar cativa pasi?
Codul nu l-am scris fix asa...l-am modificat putin.Intrebarea mea este ideea.
« Ultima modificare: Martie 20, 2014, 14:48:32 de către Jurj Andrei » Memorat
darkseeker
De-al casei
***

Karma: 29
Deconectat Deconectat

Mesaje: 106



Vezi Profilul
« Răspunde #1 : Martie 20, 2014, 10:13:52 »

Secventa asta de cod
Cod:
while (s % 5 == 0)
    y = y / 5, ++nr;
O sa iti intre in ciclu infinit, deoarece tu pui o conditie pentru s dar nu il modifici in niciun fel. In plus, nu imi dau seama cine e s, pentru ca aparent nu ai niciun s declarat in functie. s e o variabila globala ? In cazul in care s nu e vreo variabila globala cel mai probabil codul ala nici macar nu compileaza.
 
Poti sa te uiti pe infoarena la problema factorial [ 0 ] si cred ca gasesti acolo in comentarii rezolvarea pentru ce vrei tu.

[ 0 ] http://www.infoarena.ro/problema/fact
Memorat
jurjstyle
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #2 : Martie 20, 2014, 15:52:35 »

Am gasit.Functia a devenit:
Cod:
#include<iostream>
#include<cmath>
using namespace std;

int nz(int n)
{int nr=0,i=5,cnt=1;
 while(n/pow(i,cnt)>=1)
      {nr=nr+n/pow(i,cnt);
       ++cnt;
      }
 return nr;
}
Multumesc de ajutor.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines