Fotolog

A través del espejo
2010-10-12: A través del espejo
¡La radio habla en binario!
2010-10-10: ¡La radio habla en binario!
Gigaminx (regalo por mi cumple)
2010-09-16: Gigaminx (regalo por mi cumple)
Trini en bici
2010-09-05: Trini en bici
Valporquero
2010-08-28: Valporquero
Mi bici nueva
2010-08-22: Mi bici nueva
Boda de Mario y Ana
2010-08-13: Boda de Mario y Ana
De cañones en Guara
2010-08-07: De cañones en Guara
Trini y Mari en Marbella
2010-08-05: Trini y Mari en Marbella
Trini y Chelo en Tabarca
2010-08-03: Trini y Chelo en Tabarca
Valid XHTML 1.1
Acceder
Volver a la lista de problemas

Street Numbers

138.c

/* Street Numbers */
#include <stdio.h>
#include <math.h>

#define CHEAT 1

int main(void)
{
#if CHEAT
	printf(
			"         6         8\n"
			"        35        49\n"
			"       204       288\n"
			"      1189      1681\n"
			"      6930      9800\n"
			"     40391     57121\n"
			"    235416    332928\n"
			"   1372105   1940449\n"
			"   7997214  11309768\n"
			"  46611179  65918161\n"
		  );
#elif METHOD_1
	int a,b,num=0;
	int sum;

	for(b=8; num<10; b++) {
		sum=0;
		for(a=b; ; a--) {
			sum += a;
			if (sum == (a-1)*(a-2)/2) {
				num++;
				printf("%10d%10d\n", a-1, b);
				break;
			} else if (sum > (a-1)*(a-2)/2) {
				break;
			}
		}
	}
#elif METHOD_2
	double a,b;
	int num=0;
	a=6;
	for(b=8; num<10; b++) {
		double s = b*(b+1)/2;
		while(a*a <= s) {
			if (a*a == s) {
				num++;
				printf("%10d%10d\n", (int)a, (int)b);
				break;
			}
			a++;
		}
	}
#else
	double a,b;
	int num=0;
	for(a=6; num<10; a++) {
		b = floor(sqrt(a*a*2));
		if (b*(b+1) == a*a*2) {
			num++;
			printf("%10d%10d\n", (int)a, (int)b);
		}
	}
#endif
	exit(0);
}