hdu 1249 三角形

欧拉定理:面=边+2-点;

边:b[i]=b[i-1]+(4*i-3)*3;

点:d[i]=d[i-1]+(2*i-1)*3;

两个都是等差数列,可以化简后直接套公式,也可以直接递推;

这里直接递推:

#include <stdio.h>
#include <string.h>
#define maxn 10005
__int64 d[maxn],b[maxn];
void solve()
{
	__int64 i;
	memset(d,0,sizeof(d));
	memset(b,0,sizeof(b));
	d[1]=3;
	for(i=2;i<maxn;i++)
		d[i]=d[i-1]+(2*i-1)*3;
	b[1]=3;
	for(i=2;i<maxn;i++)
		b[i]=b[i-1]+(4*i-3)*3;
		
}
int main()
{
	__int64 T,n;
	solve();
	scanf("%I64d",&T);
	while(T--)
	{
		scanf("%I64d",&n);	
		printf("%I64d\n",b[n]+2-d[n]);
	}	
}

 

你可能感兴趣的:(hdu 1249 三角形)