题目背景
三角形计数(triangle) 递推
题目描述
把大三角形的每条边n等分,将对应的等分点连接起来(连接线分别平行于三条边),这样一共会有多少三角形呢?编程来解决这个问题。
输入输出格式
输入格式:
第一行为整数t(≤100),表示测试数据组数;接下来t行,每行一个正整数n(≤500)。
输出格式:
对于每个n,输出一个正整数,表示三角形个数。
输入输出样例
说明
n(≤500)
t(≤100)
思路:数学
证明及推导过程见这里第二个
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int t,n; int main(){ scanf("%d",&t); while(t--){ scanf("%d",&n); if(n%2==0) cout<<n*(n+2)*(2*n+1)/8<<endl; else cout<<(n+1)*(2*n*n+3*n-1)/8<<endl; } }