蓝桥杯2022年第十三届决赛真题-斐波那契数组(C/C++/Java组)

news/2024/5/19 1:44:54 标签: 蓝桥杯, c++, 枚举, 暴力, 算法

题目描述

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

1. n ≥ 2;

2. a0 = a1;

3. 对于所有的 i(i ≥ 2),都满足 ai = ai−1 + ai−2。

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

输入格式

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

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

输出格式

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

样例输入

5
1 2 2 4 8

样例输出

3

提示

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

对于所有评测用例,2 ≤ n ≤ 1e5 ,1 ≤ ai ≤ 1e6。

解析:

        题目有个坑点,n为1e5,但是题目中的 ai 最大为1e6,当n为30的时候,以1开头的斐波那契数列的值已经超过了1e6,所以 n=30 后面的数全部需要修改。

        我们枚举以 1~1e6 开头的斐波那契数列,并且记录与原数列相同的项的数量,维护最大值maxx,最后用数列的总项数减去最大值maxx即可。

代码: 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll n,a[N],f[N],maxx;
int main(){
	scanf("%lld",&n);
	int k=n;
	if(n>30) n=30;
	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
	for(int i=1;i<=1e6;i++){
		int count=0;		
		f[1]=f[2]=i;
		if(a[1]==i) count++;
		if(a[2]==i) count++;
		for(int j=3;j<=30;j++){
			f[j]=f[j-1]+f[j-2];
			if(f[j]>1e6) break;
			if(a[j]==f[j]) count++;	
		}
		if(count>maxx) maxx=count;
	}
	cout<<k-maxx;
	return 0;
}


http://www.niftyadmin.cn/n/416650.html

相关文章

更新Navicat Premium 16.2 之 如何使用Navicat连接Redis的新手教程

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

聊聊“死锁“

“死锁”或者Deadlock是计算机科学中一个重要的概念&#xff0c;说得是在并发系统中的一种状态&#xff0c;其中多个进程或线程无限期地等待资源&#xff0c;而无法继续执行下去。当发生死锁时&#xff0c;系统中的进程或线程会陷入一种僵持状态&#xff0c;无法继续进行&#…

C/C++基础讲解(一百零七)之经典篇(几岁/逆序打印/回文)

C/C++基础讲解(一百零七)之经典篇(几岁/逆序打印/回文) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一样都是这么啃过来的,从不知到知知,懵懂到入门,每一步都走的…

培训班出来拿17K,入职后8天就被裁了....

最近翻了一些网站的招聘信息&#xff0c;把一线大厂和大型互联网公司看了个遍&#xff0c;发现市场还是挺火热的&#xff0c;虽说铜三铁四&#xff0c;但是软件测试岗位并没有削减多少&#xff0c;建议大家有空还是多关注和多投简历&#xff0c;不要闭门造车&#xff0c;错过好…

Cmake工具的简单使用

引言 本篇文章讲述如何简单的使用cmake工具构建一个项目&#xff0c;帮助入门的c新手学会如何使用cmake. 我们在Clion新创建一个项目时&#xff0c;会发现&#xff0c;除了main.cpp文件之外&#xff0c;还存在一个build-debug目录和一个CMakelists.txt文件&#xff0c;如图: …

一小时让你Get到面试套路:记一次Java初中级程序员面试流程梳理

视频教程传送门&#xff1a; 一小时让你Get到面试套路&#xff1a;记一次Java初中级程序员面试流程梳理_哔哩哔哩_bilibili听了N多个师兄师姐的面试录音&#xff0c;采访了N多个师兄时间的面试经历&#xff0c;才总结出来的java面试流程&#xff0c;非常适合正在准备面试的你。…

【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】

1 网络请求 – 原生 请求数据,保存数据 1 原生请求 Page({data: {allCities: {},houselist: [],currentPage: 1},async onLoad() {// 1.网络请求基本使用wx.request({url: "http://codercba.com:1888/api/city/all",success: (res) > {//保存数据const data res…

【数据结构与算法】掌握顺序栈:从入门到实践

&#x1f331;博客主页&#xff1a;青竹雾色间. &#x1f331;系列专栏&#xff1a;数据结构与算法 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 前言 顺序栈的实现 初始化栈 判断栈空 判断栈满 入&#xff08;进&#xff09;栈 出栈 获取栈…