Processing math: 100%
编程题
                斐波那契数组

问题描述

如果数组 A=(a0,a1,,an1) 满足以下条件, 就说它是一个斐波那契数 组:

  1. n2;

  2. a0=a1

  3. 对于所有的 i(i2), 都满足 ai=ai1+ai2

现在, 给出一个数组 A, 你可以执行任意次修改, 每次修改将数组中的某 个位置的元素修改为一个大于 0 的整数。请问最少修改几个元素之后, 数组 A 会变成一个斐波那契数组。

输入格式

输入的第一行包含一个整数 n, 表示数组 A 中的元素个数。

第二行包含 n 个整数 a0,a1,,an1, 相邻两个整数之间用一个空格分隔。

输出格式

输出一行包含一个整数表示最少需要修改数组 A 中的几个元素之后, 数组 A 可以变为一个斐波那契数组。

样例输入

5
1 2 2 4 8

样例输出

3

样例说明

将原数组修改为 (1,1,2,3,5), 最少修改三个元素变成了一个斐波那契数组。

评测用例规模与约定

对于所有评测用例, 2n105,1ai106

查看答案
赣ICP备20007335号-2