Cod sursa(job #778645)

Utilizator dan89Stan Alexandru dan89 Data 15 august 2012 12:31:41
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#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;
}