Counting Triangles
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2051 Accepted Submission(s): 980
process to the end of the file
1 2 3
1 5 13
题意:中文不用翻译。
思路:定三个数组,a[]代表第几行的正三角形个数,b[]代表第几行的反三角形个数。sum[]代表总和。
可以找下规律: a[1]=1 b[1]=0
a[2]=2+1 b[2]=1
a[3]=3+2+1 b[3]=2
a[4]=4+3+2+1 b[4]=3+1
a[5]=5+4+3+2+1 b[5]=4+2
a[6]=6+5+4+3+2+1 b[6]=5+3+1
a[7]=7+6+5+4+3+2+1 b[7]=6+4+2
a[n]=n+a[n-1] b[n]=n-1+b[n-2]
AC代码如下:
#include<cstdio>
#include<cstring>
using namespace std;
long long a[510],b[510],sum[510];
int main()
{ int i,j,k;
for(i=1;i<=500;i++)
a[i]=i+a[i-1];
for(i=2;i<=500;i++)
b[i]=i-1+b[i-2];
for(i=1;i<=500;i++)
sum[i]=sum[i-1]+a[i]+b[i];
while(~scanf("%d",&k))
printf("%lld\n",sum[k]);
}