Pagini recente » Cod sursa (job #2320433) | Cod sursa (job #2503783) | Cod sursa (job #1781578) | Cod sursa (job #2784010) | Cod sursa (job #778645)
Cod sursa(job #778645)
#include<fstream>
using namespace std;
ifstream in("fact.in");
ofstream out("fact.out");
long long p, m[20][3];
long long solve ( long long target , int i, long long res) {
if(target == 0)
return res;
else if (target >= m[i][0])
{ long long c = target/m[i][0];
res += c * m[i][1]; return solve(target - c * m[i][0],i-1,res);}
else if (i == 0 || target == m[i][0]-1)
return -1;
else return solve(target,i-1,res);
}
int main(){
in>>p;
m[0][0] = 0; m[0][1] = 1;
for(int i = 1; i <= 18; i++){
m[i][0] = m[i-1][0] * 5 + 1;
m[i][1] = m[i-1][1] * 5;
}
if(p==0)
out<<"1";
else
out<<solve(p,18,0);
in.close();
out.close();
return 0;
}