编程题
斐波那契数组 ### 问题描述 如果数组 $A=\left(a_{0}, a_{1}, \cdots, a_{n-1}\right)$ 满足以下条件, 就说它是一个斐波那契数 组: 1. $n \geq 2$; 2. $a_{0}=a_{1}$ 3. 对于所有的 $i(i \geq 2)$, 都满足 $a_{i}=a_{i-1}+a_{i-2}$ 。 现在, 给出一个数组 $A$, 你可以执行任意次修改, 每次修改将数组中的某 个位置的元素修改为一个大于 0 的整数。请问最少修改几个元素之后, 数组 $A$ 会变成一个斐波那契数组。 ### 输入格式 输入的第一行包含一个整数 $n$, 表示数组 $A$ 中的元素个数。 第二行包含 $n$ 个整数 $a_{0}, a_{1}, \cdots, a_{n-1}$, 相邻两个整数之间用一个空格分隔。 ### 输出格式 输出一行包含一个整数表示最少需要修改数组 $A$ 中的几个元素之后, 数组 $A$ 可以变为一个斐波那契数组。 ### 样例输入 ```text 5 1 2 2 4 8 ``` ### 样例输出 ```text 3 ``` ### 样例说明 将原数组修改为 $(1,1,2,3,5)$, 最少修改三个元素变成了一个斐波那契数组。 ### 评测用例规模与约定 对于所有评测用例, $2 \leq n \leq 10^{5}, 1 \leq a_{i} \leq 10^{6}$ 。
查看答案
赣ICP备20007335号-2