Cod sursa(job #950603)

Utilizator dpopovicDana Popovici dpopovic Data 17 mai 2013 12:15:30
Problema Cifra Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <stdio.h>
#include <string.h>
#include <time.h>

long get_count(long val) {
	long count=0, i = 5;

	while( i <= val ) {
		count += val/i;
		i *= 5;
	}
	return count;
}

long get_N(long P) {
	long min = 3*P, max = 5*P, mid, zeros;
	while ( min <= max) {
		mid = (min + max)/2;
		zeros = get_count(mid);
		printf("min=%ld   max=%ld   zeros=%ld\n", min, max, zeros );
		if(zeros==P)
			return (mid - mid%5);
		if(zeros>P) {
			max = mid-1;
		} else {
			min = mid+1;
		}
		if(min>max)
			return -1;
	}
	return -1;
}

int main(int argc, char *argv[]) {
	
	int fin[] = {1,4,7,6,5,6,3,6,9,0};
	
	long T, i=0, N, last = 0;
	int pen, ult, j;
	
	char c[101];
	
	clock_t start = clock();
	
	FILE *f1 = fopen("cifra.in", "r");
	fscanf(f1, "%ld", &T);
	FILE *f2 = fopen("cifra.out", "w");
	
	printf("T=%ld\n", T);
	
	while(i++<T) {
		fscanf(f1, "%s", c);
		if(strlen(c)>1)
			pen = c[strlen(c)-2]-'0';
		else
			pen = 0;
		ult = c[strlen(c)-1]-'0';
		//printf("c=%s    pen= %d    ult=%d \n", c, pen, ult);
		//
		if(pen > 0)
			last = pen * 7;
		else
			last = 0;
		//	*/
		//last = 0;
		j=0;
		while(j<ult) {
//			printf("last = %ld   fin[%d] = %d\n", last, j, fin[j]);
			last += fin[j];
			j++;
		}
		N = last%10;
		//printf("N=%ld    last  = %ld \n", N, last);
		fprintf(f2, "%ld\n", N);
	}

	fclose(f1);	
	fclose(f2);
	
	printf ( "%f ms\n\n", ( (double)clock() - start ) * 1000 / CLOCKS_PER_SEC);
	
	return 0;
}