Cod sursa(job #2453199)

Utilizator cristi1990anCornea Cristian cristi1990an Data 2 septembrie 2019 18:53:32
Problema Factorial Scor 15
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

void save_tens(unsigned long long *p, unsigned long  long* n)
{

	while ((*p % 10 == 0)&&(*n!=0))
	{
		*p = *p / 10;
		*n = *n - 1;
	}
}

unsigned long long quick_pow10(int n)
{
	static int pow10[10] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

	return pow10[n];
}

unsigned long long len(unsigned long long x) {
	if (x >= 1000000000) return 10;
	if (x >= 100000000)  return 9;
	if (x >= 10000000)   return 8;
	if (x >= 1000000)    return 7;
	if (x >= 100000)     return 6;
	if (x >= 10000)      return 5;
	if (x >= 1000)       return 4;
	if (x >= 100)        return 3;
	if (x >= 10)         return 2;
	return 1;
}

unsigned long min(unsigned long long a, unsigned long long b)
{
	if (a < b)
		return a;
	return b;
}


int main()
{
	FILE* f = fopen("fact.in", "rt");
	unsigned long long n, p = 1, i = 2;
	
	fscanf(f, "%llu", &n);

	while (n)
	{
		p = (p * i) % 10000000000000;
		save_tens(&p, &n);
		printf("%llu %llu \n", p, n);
		i++;
	}

	f = fopen("fact.out", "wt");

	fprintf(f, "%llu \n", i-1);
	fflush(stdout);

	fclose(f);
	return 0;
}