Pagini recente » Cod sursa (job #1186112) | Istoria paginii runda/urmasii_lui_moisil_2012_xi-xii/clasament | Cod sursa (job #1761838) | Cod sursa (job #1893417) | Cod sursa (job #2562056)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("fact.in");
ofstream out("fact.out");
//int power(int base, int exp);
int factorial(int n,int p);
int multiply(int x,long long int res[],int res_size);
int main() {
int p, n;
int no_match=1;
in >> p;
if (p == 0) { out << 1; }
//nrO = power(10, p);
else{
n=1;
while (no_match==1){
n++;
no_match=factorial(n,p);
}
if (no_match==2) { out << n; }
else out << -1;
}
return 0;
}
/*
int power( int base, int exp) {
int result = 1;
for (int c = 1;c <=exp;c++) {
result = result * base;
}
return result;
}
*/
int multiply(int x,int long long res[],int res_size){
int carry=0;
for(int i=0;i<res_size;i++){
int prod=res[i]*x+carry;
res[i]=prod%10;
carry=prod/10;
}
while(carry){
res[res_size]=carry%10;
carry=carry/10;
res_size++;
}
return res_size;
}
int factorial(int n,int p) {
long long int res[1000];
int k=0;
res[0]=1;
int res_size=1;
for(int x=2;x<=n;x++){
res_size=multiply(x,res,res_size);
}
for(int i=0;res[i]==0;i++){
if(res[i]==0){k++;}
}
if(k<p){return 1;}
else if(k==p){return 2;}
else {return 3;}
}