Cod sursa(job #2093451)

Utilizator PaulOrasanPaul Orasan PaulOrasan Data 23 decembrie 2017 18:27:38
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <cstdio>
#include <vector>
using namespace std;

FILE * fin=fopen("fact.in","r");
FILE * fout=fopen("fact.out","w");
struct Elemente{
    int numar,nrApar5,nrApar2;
};
int getAparitii(int &n,int k)
{
    int ct=0;
    while (n%k==0){
        n/=k;
        ct++;
    }
    return ct;
}
int countApar5(vector <Elemente> v)
{
    int ct=0;
    for (vector<Elemente>:: iterator p=v.begin(); p<v.end(); p++){
        ct+=p->nrApar5;
    }
    return ct;
}
int countApar2(vector <Elemente> v)
{
    int ct=0;
    for (vector<Elemente>::iterator p=v.begin(); p<v.end(); p++){
        ct+=p->nrApar2;
    }
    return ct;
}
int minim(int a, int b)
{
    if (a<=b)
        return a;
    else
        return b;
}
int main()
{
    int p,nr=-1;
    long long int n=1;
    fscanf(fin,"%d",&p);
    vector<Elemente>v;
    Elemente x;
    while (nr<p){
        nr=-1;
        for (int i=1; i<=n; i++){
            x.numar=i;
            x.nrApar5=getAparitii(x.numar,5);
            x.nrApar2=getAparitii(x.numar,2);
            v.insert(v.begin(),x);
        }
        nr=minim(countApar5(v),countApar2(v));
        n++;
        v.erase(v.begin(),v.end());
    }
    fprintf(fout,"%d",n-1);

}