Pagini: 1 ... 11 12 [13]   În jos
  Imprimă  
Ajutor Subiect: 006 Factorial  (Citit de 107971 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Pateu69
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #300 : Aprilie 04, 2014, 20:43:14 »

Salut, am si eu o problema la acest program: Imi da TLE  Brick wall Brick wall Brick wall
Aveti aici ceea ce am facut (50 de puncte, la restul am TLE) :

#include <fstream>
 
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int n, fact, aux, sw,k;
int main()
{
    fin>>n;
    if(n==0) k=1;
 
 
    while(n>0)
    {
        sw=0;
        fact=fact+5;
        aux=fact;
        while(aux%5==0)
            {aux=aux/5; sw++;}
        n=n-sw;
 
    }
 
        if(n==0&&k==0)fout<<fact;
        else if(k==1) fout<<"1";
        else fout<<"-1";
 
    return 0;
}

Imi puteti da idei pentru optimizarea programului Sad, ma chinui de ceva timp... Mersi Smile
Memorat
BaTDucK
Strain


Karma: 10
Deconectat Deconectat

Mesaje: 19



Vezi Profilul
« Răspunde #301 : Aprilie 04, 2014, 21:31:53 »

Te-ar putea ajuta:
  • daca exista solutie atunci 4*P<=N;
  • o formula cu care poti afla de cate ori apare un anumit numar(sa zicem k) in descompunerea tuturor numerelor mai mici ca un numar(sa zicem n)
    S=[n/k1]+[n/k2]+[n/k3]+...+[n/ki]; i-ul fiind exponentul maxim astfel incat ki<=n si []- parte intreaga
Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #302 : Mai 09, 2014, 14:28:38 »

Pentru p=0 raspunsul corect ar trebui sa fie 0 nu 1
Memorat
Andrei1998
De-al casei
***

Karma: 26
Deconectat Deconectat

Mesaje: 112



Vezi Profilul
« Răspunde #303 : Mai 10, 2014, 14:20:43 »

Pentru 0 raspunsul corect este totusi 1, conform enuntului:
Citat
Sa se gaseasca cel mai mic numar natural strict pozitiv N pentru care N! are exact P cifre de 0 la sfarsit.
Daca nu era insa pusa conditia de numar strict pozitiv, atunci raspunsul corect ar fi fost 0, cum zice si Petru.
Memorat
cristighr
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #304 : August 21, 2014, 16:20:09 »

am si eu nevoie de ajutor, primesc punctaj mic si nu inteleg de ce, pentru 0 si 2 din imagine, programul arata corect, dupa nu.

Ma puteti ajuta va rog? asta e ce am scris.

#include <iostream>
#include <fstream>
#include <stdio.h>

using namespace std;

ifstream f("fact.in");
ofstream g("fact.out");

int main()
{
    long long p;
    f>>p;
    long long numar,i;
    numar=1;  i=1;
    long long fact;
    long long k=0;
    long long zero=1;

    //cati de zero la sfarsit
    while(k!=p)
    {
        zero=zero*10;
        k++;
    }

    while(numar%zero!=0)
    {
        numar=numar*i;
        i++;
        if(numar%zero==0)
            fact=i;
    }
    fact--;
    g<<fact;

    return 0;
}
Memorat
VladBtz
Strain
*

Karma: -3
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #305 : Ianuarie 27, 2015, 18:21:10 »

Cod:
#include <iostream>
#include<fstream>

using namespace std;

int main()
{
    long P;
    int v[1000],stop,i=1,n=0,k,t;
    ifstream f("factorial.in");
    ofstream g("factorial.out");
    f>>P;
  v[1000]=1;
  while(stop!=P)
    {t=0;
        stop=0;
    k=1000;
        v[k]*=i;
        while(v[k]>=10){n=v[k];k--;v[k+1]=n%10;v[k]+=n/10;}
        for(n=1000;n<=k&&t==0;n--){if (!v[n])stop++ ;else t=1;}
i++;
    }
    g<<i;
    f.close();g.close();
}

de ce nu merge?
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #306 : Ianuarie 27, 2015, 19:58:19 »

Două sfaturi o abordare mai productivă:

- Discuția ar trebui să aibă loc la nivel de idei, nu de cod. E mai ușor pentru toată lumea Smile Explică ce vrei să faci acolo.
- Înainte să postezi, încearcă să fii cât mai exigent cu soluția pe care o ai. Vezi dacă sigur ai înțeles bine limitele, enunțul, etc  Smile
« Ultima modificare: Ianuarie 27, 2015, 23:31:15 de către Mihai Calancea » Memorat
StefanCeLmIc
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #307 : Iulie 18, 2015, 01:54:38 »

Am si eu o intrebare,va rog frumos,puteti sa-mi spuneti de ce iau 10  doar 10 pct.
M-am gandit ca prima data sa fac o fariabila care sa ia n*5 si dupa sa scad de fiecare data cand dau de puterile lui 5 scad din aux corespunzator,multumesc!
#include <fstream>
using namespace std;
ifstream in("fact.in");
ofstream out("fact.out");
int main(){
   long long n,i,j,s=1,p=-5;
   in>>n;
   long long aux;
   aux=n;
     aux=aux*5;
   if(n==0)
    {
        out<<"-1";
        return 0;
    }
   for(i=1;i<=100000000;i++)
    {
        s=s*5;
        p=p+5;
        if(s>aux)
        {
            out<<aux;
            return 0;
        }
        if(s==n)
        {
            out<<"-1";
            return 0;
        }
        if(s<aux)
        {
            aux=aux-p;
        }


    }
}
Memorat
vladdobro07
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #308 : Februarie 02, 2019, 18:28:35 »

SUPER TARE  Banana[/i]
Memorat
Pagini: 1 ... 11 12 [13]   În sus
  Imprimă  
 
Schimbă forumul:  

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