递推 hdu 1396

时间:2023-03-09 04:14:28
递推 hdu 1396

给你边长为n的等边三角形

算有几个三角形

z[1]=1;

第N层 z[n]

1   n-1层 z[n-1]

2   2*n-1 个小的

3   新产生的 正的>1的三角形 n*(n-1)/2;

4   新产生的倒的>1的三角形  /这边可以去推一推

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h> using namespace std;
typedef long long ll;
#define MAXN 505
ll z[MAXN]; int main()
{
z[]=;
for(int i=;i<=;i++)
{
z[i]=z[i-]+*i-+i*(i-)/;
int k=i-;
while(k>)
{
z[i]+=k;
k-=;
}
}
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%lld\n",z[n]);
}
return ;
}