Topcoder_153
来源:互联网 发布:木结构建筑优缺点知乎 编辑:程序博客网 时间:2024/06/07 00:01
【问题描述】
给定一个整数序列s[0],s[1],..,s[n],通过计算它的差序列,即 s[1]-s[0], s[2]-s[1], ..., s[n]-s[n-1],我们得到第二个序列,该序列的整数个数比原始序列个数少一个。在新得到的序列上不断的重复以上的计算,直到我们得到的序列的整数个数是1为止。
例如:
原始序列: 5 -4 12 23
第一次计算后 -9 16 11
第二次计算后 25 -5
第三次计算后 -30
我们现在的目的是预测原始序列的下一个整数,使得按照以上计算方式最终得到的差序列的整数是0。比如上面的例子如果在23后的数字是-1,那么经过第三次计算后的序列为-30和-30,再进行第四次计算最终得到的整数就是0。具体的算法可以是倒推计算,即先确定第三次计算的序列上应该填入什么整数,再计算第二次的等等,直到计算得到原始序列需要添加的整数。
定义:
类 DifDif
方法 public int predict(int[] seq)
约束:
1、原始序列由1至10个元素构成;
2、每个元素的在-1000至1000之间。
测试用例:
1、{5,-4, 12, 23} Returns: -1
2、{100} Returns: 100
3、{1,4,9,16,25,36} Returns: 49
4、{-1000,1000,-1000,1000,-1000,1000,-1000,1000,-1000,1000} Returns: 1023000
给定一个整数序列s[0],s[1],..,s[n],通过计算它的差序列,即 s[1]-s[0], s[2]-s[1], ..., s[n]-s[n-1],我们得到第二个序列,该序列的整数个数比原始序列个数少一个。在新得到的序列上不断的重复以上的计算,直到我们得到的序列的整数个数是1为止。
例如:
原始序列: 5 -4 12 23
第一次计算后 -9 16 11
第二次计算后 25 -5
第三次计算后 -30
我们现在的目的是预测原始序列的下一个整数,使得按照以上计算方式最终得到的差序列的整数是0。比如上面的例子如果在23后的数字是-1,那么经过第三次计算后的序列为-30和-30,再进行第四次计算最终得到的整数就是0。具体的算法可以是倒推计算,即先确定第三次计算的序列上应该填入什么整数,再计算第二次的等等,直到计算得到原始序列需要添加的整数。
定义:
类 DifDif
方法 public int predict(int[] seq)
约束:
1、原始序列由1至10个元素构成;
2、每个元素的在-1000至1000之间。
测试用例:
1、{5,-4, 12, 23} Returns: -1
2、{100} Returns: 100
3、{1,4,9,16,25,36} Returns: 49
4、{-1000,1000,-1000,1000,-1000,1000,-1000,1000,-1000,1000} Returns: 1023000
- public class DifDif {
- public int predict(int[] seq) {
- int len = seq.length;
- int sum = 0;
- for (int i = 0; i < len; i++) {
- for (int k = 1; k < len - i; k++)
- seq[k-1] = seq[k] - seq[k-1];
- }
- for (int i = 0; i < len; i++)
- sum += seq[i];
- return sum;
- }
- }