题解:SP8 CMPLS - Complete the Sequence!

· · 题解

题目大意

给定一个序列,找出规律并给出接下来的c项。

题目思路

这道题可以用差分的方法解决。

什么是差分?

差分可以简单理解为前缀和的逆运算。

差分,又名差分函数或差分运算,差分的结果反映了离散量之间的一种变化,是研究离散数学的一种工具,常用函数差近似导数。差分在数学、物理和信息学中应用很广泛,模拟电路中有差分放大电路一说。差分运算,相应于微分运算。 (摘自百度百科)

感谢 ztytql

1 1 1 1 1 1 1 1 1 2 11 56
0 0 0 0 0 0 0 0 1 9 45
0 0 0 0 0 0 0 1 8 36
0 0 0 0 0 0 1 7 28
0 0 0 0 0 1 6 21
0 0 0 0 1 5 15
0 0 0 1 4 10
0 0 1 3 6
0 1 2 3
1 1 1

代码

#include<bits/stdc++.h>
using namespace std;
int a[101][101],t,s,c; 
int main(){
    cin >> t;
    while(t--)
    {
        cin >> s >> c;
        for (int i=1;i<=s;i++) 
            cin >> a[1][i];
        for (int i=1;i<s;i++)
            for (int j=1;j<=s-i;j++)
                a[i][j] = a[i-1][j+1]-a[i-1][j];
        for (int i=1;i<=c;i++) 
            a[s-1][i]=a[s-1][1];
        for (int i=s-1;i>=1;i--){
            for(int j=s-i+1;j<=s+c;j++) {
                a[i][j]=a[i][j-1]+a[i+1][j-1];
            }
        }
        for (int i=1;i<=c+s;i++) 
            cout << a[1][i]<<" ";
        cout << endl;//完结撒花! 
    }
    return 0;
}

看完了就去做题吧!