第十三届蓝桥杯国赛 C++ C 组 Java A 组 C 组 Python C 组 E 题——斐波那契数组(三语言代码AC)

这篇具有很好参考价值的文章主要介绍了第十三届蓝桥杯国赛 C++ C 组 Java A 组 C 组 Python C 组 E 题——斐波那契数组(三语言代码AC)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.斐波那契数组

1.题目描述

如果数组 A = ( a 0 , a 1 , ⋯ . a n − 1 ) A=(a_0,a_1,⋯.a_{n-1}) A=(a0,a1,.an1)满足以下条件, 就说它是一个斐波那契数组:

  1. n ≥ 2 ; n≥2; n2;
  2. a 0 = a 1 a_0=a_1 a0=a1
  3. 对于所有的 i ( i ≥ 2 ) , i(i≥2), i(i2),都满足 a i = a i − 1 + a i − 2 。 a_i=a_{i-1}+a_{i-2}。 ai=ai1+ai2

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

2.输入格式

输入的第一行包含一个整数 n n n,表示数组 A A A 中的元素个数。
第二行包含 n n n 个整数 a 0 , a 1 , ⋯ . a n − 1 , a_0,a_1,⋯.a_{n-1}, a0,a1,.an1,相邻两个整数之间用一个空格分隔。

3.输出格式

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

4.样例输入

5
1 2 2 4 8

5.样例输出

3

6.数据范围

2 ≤ n ≤ 1 0 5 , 1 ≤ a i ≤ 1 0 6 。 2≤n≤10^5,1≤a_i≤10^6。 2n105,1ai106

7.原题链接

斐波那契数组

2.解题思路

首先考虑斐波那契数组具有什么性质,我们令 a 0 = a 1 = 1 a_0=a_1=1 a0=a1=1去打印出前30位斐波那契数。
蓝桥杯 斐波那契数组,蓝桥真题,java,蓝桥杯,c++,算法,python
不难发现,在不到30位的情况下,斐波那契数组的值已经超出了1e6,而注意到题目给定的 a i a_i ai 的最大值才为 1e6。这说明其实后面的数我们根本无需考虑,都是必须要修改的。

接下来我们就只需要考虑前30位数最多可以保留多少个数,假设最多可以保留x个数,那么答案就为n-x

对于斐波那契数列,如果 a 0 a_0 a0 确定了,那么整个数列都确定了。所以我们可以枚举 a 0 a_0 a0 的值,枚举的范围为 [ 1 , 1 0 6 ] 。 [1,10^6]。 [1,106]然后去计算出前三十位的值,看与原数组符合预期的数有多少个,所有符合预期的数量取一个最大值x,最终答案即为n-x

时间复杂度 O ( 30 ∗ 1 0 6 ) O(30*10^6) O(30106)文章来源地址https://www.toymoban.com/news/detail-800815.html

3.Ac_code

1.Java

import java.io.*;
import java.util.Scanner;

public class Main {
    static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
    static int[] arr = new int[50];
    static int V = 1000000;

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        //表示无穷大
        int res = 0x3f3f3f3f;
        int n = sc.nextInt();
        int count = n;
        //我只读入前三十个数
        if (n > 30) n = 30;
        for (int i = 1; i <= n; i++) {
            arr[i] = sc.nextInt();
        }
        //枚举开头是多少         30*1e6   3e7
        for (int i = 1; i <= V; ++i) {
            int a = i, b = i, c = 0;
            int ans = 0;
            if (arr[1] == a) ans++;
            if (arr[2] == b) ans++;
            for (int j = 3; j <= 30; ++j) {
                c = a + b;
                //这里是一个减枝
                if (c > V) break;
                if (c == arr[j]) ans++;
                a = b;
                b = c;
            }
            res = Math.min(count - ans, res);
        }
        out.println(res);
        out.flush();
    }
}

2.C++

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int inf = 0x3f3f3f3f;
const int V=1000000;

int n;
int arr[50];
int res=inf;
int main() 
{
    scanf("%d",&n);
    int count=n;
    //只需要考虑前30位数
    if(n>30) n=30;
    for(int i=1;i<=n;++i){
        scanf("%d",&arr[i]);
    }
    //起始的数(f[1]的值)
    for(int i=1;i<=V;++i){
        //a,b,c作为滚动数组枚举斐波那契数
        LL a=i,b=i,c=0;
        int ans=0;
        if(arr[1]==a) ans++;
        if(arr[2]==b) ans++;
        for(int j=3;j<=30;++j){
            c=a+b;
            //没必要继续下去
            if(c>V) break;
            if(c==arr[j]) ans++;
            a=b,b=c;
        }
        res=min(count-ans,res);
    }
    printf("%d\n",res);
    return 0;
}

3.Python

v=1000000
res=float("inf")
n=int(input())
count=n
if n>30:
    n=30
arr=[0]*50
l=list(map(int,input().split()))
for i in range(1,n+1):
    arr[i]=l[i-1]
for i in range(1,v+1):
    a,b,c=i,i,0
    ans=0
    if arr[1]==a:
        ans=ans+1
    if arr[2]==b:
        ans=ans+1
    for j in range(3,31):
        c=a+b
        if c>v:
            break
        if c==arr[j]:
            ans=ans+1
        a,b=b,c
    res=min(count-ans,res)
print(res)```

到了这里,关于第十三届蓝桥杯国赛 C++ C 组 Java A 组 C 组 Python C 组 E 题——斐波那契数组(三语言代码AC)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第十三届蓝桥杯C++B组j国赛

    题目 2693: 这天,小明在整理他的卡牌。 他一共有 n 种卡牌,第 i 种卡牌上印有正整数数 i(i ∈ [1, n]),且第 i 种卡牌 现有 ai 张。 而如果有 n 张卡牌,其中每种卡牌各一张,那么这 n 张卡牌可以被称为一 套牌。小明为了凑出尽可能多套牌,拿出了 m 张空白牌,他可以在上面写

    2024年02月08日
    浏览(29)
  • 蓝桥杯第十三届单片机国赛程序

    写在前面: 做完总体来说感觉一年比一年难了(估计是被骂的),虽然十三届用的底层少,但是做起来困难重重。 最难的难点在于定时器安排问题。15F2K60S2系列单片机只有三个定时器,本届题目考到了频率测量、超声波、PWM输出,再加上刷新,每一个都需要一个定时器,比

    2024年02月08日
    浏览(38)
  • 蓝桥杯单片机第十三届国赛客观题(深夜学习——单片机)

    1.填空题 (2)不同的地址范围: data:0x00-0xff idata:0x0000-0xffff xdata:0x0000-0xffff pdata:0x00-0xff code:0x0000-0xffff 2.选择题 (3)模电——》多级放大电路 (6)DS18B20 (7)模电——》二极管  (8)单片机      

    2024年02月11日
    浏览(42)
  • 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛程序设计试题以及详细题解

      本届国赛试题主要包含 LCD 、 LED 、 按键 、 EEPROM 、 串口 、 模拟电压输入 、 脉冲输入输出 七大部分,其中前面三个部分是蓝桥杯嵌入式的“亲儿子”(必考部分),而剩下的四个部分都为“干儿子”(考频相对较高)。   相对于本届省赛两套试题:   本套试题 串口数

    2024年02月02日
    浏览(52)
  • 2022 第十三届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B组题解

    2022 第十三届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B组题解 补题链接:地址 两个填空题说实话感觉非常花时间。 第1题 —— 2022 (5分) 题意:将2022拆成10个数相加,有多少方案。 思路:划分dp经典题,数字i划分成j个数。 答案:379187662194355221 第2题 —— 钟表 (5分) 题意

    2024年02月04日
    浏览(29)
  • 第十三届蓝桥杯嵌入式国赛真题(基于HAL库的巨简代码+超级详解)

    相关说明: 开发板:CT117E-M4(STM32G431RBT6) 开发环境: CubeMX+Keil5 涉及题目:第十三届蓝桥杯嵌入式国赛真题 难点:双路AD测量电压、输入捕获测频率、LCD屏幕翻转、冒泡法、初始上电判断、按键长短按 CubeMX配置、主要函数代码及说明: 1.使能外部高速时钟: 2.配置时钟树:

    2023年04月09日
    浏览(43)
  • 第十三届蓝桥杯省赛与国赛真题题解大汇总(十四届参赛者必备)

      大家好,我是执梗。本文汇总了我写的第十三届蓝桥杯所有省赛真题与国赛真题,会针对每道题打出我自己的难度评星⭐️,也会给出每道题的算法标签,帮助大家更有针对性的去学习和准备,当然许多题目由于难度或时间的原因暂未更新,如果有不懂的问题也可以在评

    2024年02月11日
    浏览(64)
  • 十三届蓝桥杯JAVA B组国赛部分题解

    大学总共参加了三届蓝桥杯,这应该是我最后一次参加蓝桥杯了,再写一篇题解算是给自己的业余竞赛结个尾。我的题解肯定不是最好的,甚至有许多错误,能给大家提供下思路就行。 思路:模拟下时钟就行,签到题 答案:502-8=494(由于匀速运动,59分59秒到0分0秒实际算一次

    2024年02月08日
    浏览(29)
  • 第十三届蓝桥杯省赛Python 组

    本次所有代码均存放于仓库: Github :GxlHus/Algorithm at 蓝桥杯 (github.com) Gitee :Algorithm: 算法解题 - Gitee.com 原题目:第十三届蓝桥杯大赛软件赛省赛_PB.pdf · AYO/Algorithm - Gitee.com 本次省赛题目总体来说不难,总体质量比较高,尤其是后边几道题,虽然能轻易做出来,但是想跑通所

    2023年04月17日
    浏览(27)
  • 第十一届蓝桥杯国赛JavaB组题解

    思路: 枚举 1 到 2020 的每个数,依次判断即可。 代码: 解法一:(比较慢但是容易想) b f s bfs b f s ,先将给出的点加入队列中,并且加到集合里。记录扩散的步数,初始化为2020,然后对队列中的每一个同一层的节点在四个方向上扩散,当扩散的点不在集合里时,把它加到

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包