Pagini recente » Cod sursa (job #665656) | Cod sursa (job #1426749) | Cod sursa (job #1200430) | Cod sursa (job #1647621) | Cod sursa (job #2093451)
#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);
}