题解 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;
}

看不懂的地方请在评论区提出,我会尽快解答
估计没人看不懂

第一次发题解,请各位读者(包括管理员)谅解!不喜勿喷