题解:SP8 CMPLS - Complete the Sequence!
Fw_190_A_3_U3 · · 题解
题目大意
给定一个序列,找出规律并给出接下来的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;
}
看完了就去做题吧!