Cod sursa(job #138498)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 18 februarie 2008 18:44:29
Problema Pascal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <math.h>

long r, d, sol, v[9], t2, t3, t5, i;

long cuprinde(long num, long y) {
	long p = 0;
	if( num == 0)
		return 0;
	while (num % y == 0 ) {
		num /= y;
		++p;
	}
	return p;
}

int main() {
	freopen("pascal.in", "r", stdin);
	freopen("pascal.out", "w", stdout);
	scanf("%ld%ld", &r, &d);
	if (d == 2) v[2] = 1;
	if (d == 3) v[3] = 1;
	if (d == 4) v[2] = 2;
	if (d == 5) v[5] = 1;
	if (d == 6) {
		v[2] = 1;
		v[3] = 1;
	}
	t2 = 0;t3 = 0;t5  = 0;
	for (i = r; i >= 1; --i) {
		if (t2 >= v[2] && t3 >= v[3] && t5 >= v[5]) {
			++sol;
			
		}
		long j = i;
		if(j){
			while( j % 2 == 0)
			{
				j/=2;t2++;
			}
			while( j % 3 == 0)
			{
				j/=3;t3++;
			}
			while( j % 5 == 0)
			{
				j/=5;t5++;
			}
		}
		j = r- i +1;
		if(j){
			while( j % 2 == 0)
			{
				j/=2;t2--;
			}
			while( j % 3 == 0)
			{
				j/=3;t3--;
			}
			while( j % 5 == 0)
			{
				j/=5;t5--;
			}
		}
		
		
	}
	printf("%ld\n", sol);
	return 0;
}