Cod sursa(job #2562056)

Utilizator raizoSoare Antonio raizo Data 29 februarie 2020 11:52:36
Problema Factorial Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#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;}
	}