Project Euler 30

變量不初始化,害死人啊


哎……又是上述錯誤……


這道題……咳……正規做法本是迭代加深DFS……

可惜可惜……直接暴力即可解決……

而且我的迭代加深DFS也純屬瞎嘗試……上代碼吧……


雖然是錯的……沒出結果……

#include <stdio.h>
#include <string.h>
#include <math.h>

int eqArr[7];

int
check(int sum, int len)
{
	int i;
	char *ans, c;
	//if (sum<500)
	//	printf("%d ", sum);
	sprintf(ans, "%d\0", sum);
	if (strlen(ans) != len)
		return 0;
	for (i=0; i<len; i++)
	{
		c = eqArr[i]+48;
		if (c != eqArr[i])
			return 0;
	}
	return 1;
}

int
calc(int len)
{
	int i, sum = 0;
	for (i=0; i<len; i++)
		if (eqArr[i]!=0)
		{
			sum += (int)pow(eqArr[i],4);
		}
	if (check(sum, len))
	{
		printf("%d\n", sum);
	}
	return 0;
}

int
generateEquation(int k, int len)
{
	int i;
	if (k >= len)
	{
		calc(len);
		return 0;
	}
	for (i=0; i<10; i++)
	{
		eqArr[k] = i;
		generateEquation(k+1, len);
	}
	return 0;
}

int
main()
{
	int l, *p;
	for (l=2; l<4; l++)
	{
		generateEquation(0, l);
	}
	return 0;
}

好在後面的代碼是對的……直接暴力……我再也不相信數學了……(氣話)

#include <stdio.h>
#include <math.h>

int
main()
{
	int i, x, now, ans, t;
	ans = 0;
	for (i=11; i<500000; i++)
	{
		x = i;
		now =0;
		while (x>0)
		{
			t = x%10;
			now += pow(t,5);
			x /= 10;
		}
		if (now == i)
		{
			printf("%d\n", i);
			ans += i;
		}
	}
	printf("%d\n", ans);
}

明天就考試了……哎……心裏沒底……也不想學了……先編程序玩吧……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章