题解 P2807 【三角形计数】
我的创新找规律思维:
一看到题,我眼睛一亮,想起了老师讲的规律。那个规律正好可以用在这道题上,但我没有那么做。因为我想找到属于自己的一种算法,想了一阵,忽然想起自己的一个找规律的小方法,立即用在了这道题上:
已知条件是同学告诉我的这道题的几个答案:
输入1,输出1
输入2,输出5
输入3,输出13
输入4,输出27
输入5,输出48
输入6,输出78
输入7,输出118
输入8,输出170
我开始使用自己的方法找规律:(真受不了缩进问题)
已知数列:1 5 13 27 48 78 118 170
一次做差:4 8 14 21 30 40 52
二次做差:4 6 7 9 10 12
三次做差:2 1 2 1 2
我的天哪!真的找到了规律!
于是马上去做,写出了这样的代码,一遍AC:
//运行环境:Dev C++ 5.1.0 Windows
#include <iostream>
using namespace std;
unsigned long long Count(int s)
{
unsigned long long Ans=1,i,j1=4,j2=4,j3=2;
for(i=1;i<s;i++)
{
Ans+=j1;
j1+=j2;
j2+=j3;
if(j3==2)j3=1;
else if(j3==1)j3=2;
}
return Ans;
}
int main()
{
int n,s;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> s;
cout << Count(s) << endl;
}
return 0;
}
看不懂的地方请在评论区提出,我会尽快解答
估计没人看不懂
第一次发题解,请各位读者(包括管理员)谅解!不喜勿喷