Cod sursa(job #1602141)
Utilizator | Data | 16 februarie 2016 16:28:52 | |
---|---|---|---|
Problema | Factorial | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.65 kb |
#include <iostream>
#include <fstream>
using namespace std;
int fr(int x)
{if(x==0) return 1;
return fr(x-1)*x;
}
int u(int x)
{int c=0;
while(x!=0)
{
if(x%10==0) c++;
else x=0;
x=x/10;
}
return c;
}
int main()
{int p, s, d, m, ok;
ifstream f("fact.in");
ofstream g("fact.out");
f>>p;
s=1; d=1000000;
ok=0;
while(s<=d && ok==0)
{
m=(s+d)/2;
if(u(fr(m))==p) if(u(fr(m-1))<p) ok=m;
else d=m-1;
else if(u(fr(m))<p) if(u(fr(m+1))==p) ok=m+1;
else s=m+1;
else d=m-1;
}
g<<ok;
g.close();
f.close();
}