蓝桥杯数列求值

一、蓝桥杯数列求值C语言

#include<stdio.h>

int main() {
    int n, s = 0;
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i) {
        int cur = 1;
        for(int j = 1; j <= i; ++j) {
            cur *= j;
        }
        s += cur;
    }
    printf("%d", s);
    return 0;
}

蓝桥杯数列求值是蓝桥杯历年真题中经常出现的一道题目,题目描述:求1!+2!+3!+…+n!的和。

以上是蓝桥杯数列求值的C语言代码,使用循环语句进行了累加计算。

二、蓝桥杯数列排序C语言

#include<stdio.h>

int main() {
    int n, a[101];
    scanf("%d", &n);
    for(int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
    }
    for(int i = 0; i < n - 1; ++i) {
        for(int j = i + 1; j < n; ++j) {
            if(a[j] < a[i]) {
                int tmp = a[j];
                a[j] = a[i];
                a[i] = tmp;
            }
        }
    }
    for(int i = 0; i < n; ++i) {
        printf("%d ", a[i]);
    }
    return 0;
}

蓝桥杯数列排序是另外一道经常考察的蓝桥杯题目,题目描述:输入n和n个数,按从小到大的顺序输出这n个数。

以上是蓝桥杯数列排序的C语言代码,使用选择排序的思路进行了实现。

三、蓝桥杯等差素数列

蓝桥杯等差素数列是较为复杂的一道蓝桥杯数列题目,题目描述:给定首项a、项数n和公差d,构造一个首项是a,公差是d,长度是n的等差数列,然后筛选出素数,输出剩余数列的和。

以下是该题的C语言代码实现:

#include<stdio.h>
#include<math.h>

int is_prime(int x) {
    if(x <= 1) return 0;
    int m = sqrt(x);
    for(int i = 2; i <= m; ++i) {
        if(x % i == 0) {
            return 0;
        }
    }
    return 1;
}

int main() {
    int a, n, d, s = 0;
    scanf("%d %d %d", &a, &n, &d);
    for(int i = 0; i < n; ++i) {
        int cur = a + i * d;
        if(is_prime(cur)) {
            continue;
        }
        s += cur;
    }
    printf("%d", s);
    return 0;
}

代码中使用了一个判断素数的函数is_prime(),较为复杂。除此之外,就是对等差数列进行了筛选和求和计算。

四、蓝桥杯接龙数列

蓝桥杯接龙数列是一道非常有趣的蓝桥杯数列题目,题目描述:给定长度为n的一个由大写字母组成的字符串s,设s[i]表示s的第i个字符,求由s[1]开始的一个数列,直到不能继续为止,使得这个数列中每个数字的各个位数之和等于下一个数字的个位数。

以下是该题的C语言代码实现:

#include<stdio.h>
#include<string.h>

int sum_digit(int x) {
    int s = 0;
    while(x) {
        s += x % 10;
        x /= 10;
    }
    return s;
}

int main() {
    char s[101];
    scanf("%s", s);
    int len = strlen(s), cur = s[0] - 'A' + 1;
    printf("%d ", cur);
    for(int i = 1; i < len; ++i) {
        int nxt = s[i] - 'A' + 1;
        while(cur % 10 + nxt != sum_digit(cur)) {
            ++cur;
        }
        printf("%d ", cur);
    }
    return 0;
}

代码中使用了一个计算整数各个位数之和的函数sum_digit(),较为简单。除此之外,就是对字符串中的字符进行了转化成整数,并依次判断是否能够满足条件,找到符合条件的数字后输出并进行迭代。

五、蓝桥杯异或数列

蓝桥杯异或数列是一道较为抽象的蓝桥杯数列题目,题目描述:输入n和n个数,对这n个数按从小到大的顺序异或计算,输出结果。

以下是该题的C语言代码实现:

#include<stdio.h>

int main() {
    int n, a[101];
    scanf("%d", &n);
    for(int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
    }
    int s = a[0];
    for(int i = 1; i < n; ++i) {
        s ^= a[i];
    }
    printf("%d", s);
    return 0;
}

代码中使用了异或运算符^,对数组中的数依次进行异或计算。

六、蓝桥杯数列排序

蓝桥杯数列排序是之前讲解的一道蓝桥杯题目,但是除了可以使用选择排序之外,还可以使用快速排序实现,以下是代码实现:

#include<stdio.h>

int partition(int a[], int l, int r) {
    int x = a[r], i = l - 1;
    for(int j = l; j < r; ++j) {
        if(a[j] <= x) {
            ++i;
            int tmp = a[i];
            a[i] = a[j];
            a[j] = tmp;
        }
    }
    int tmp = a[i + 1];
    a[i + 1] = a[r];
    a[r] = tmp;
    return i + 1;
}

void quick_sort(int a[], int l, int r) {
    if(l < r) {
        int q = partition(a, l, r);
        quick_sort(a, l, q - 1);
        quick_sort(a, q + 1, r);
    }
}

int main() {
    int n, a[101];
    scanf("%d", &n);
    for(int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
    }
    quick_sort(a, 0, n - 1);
    for(int i = 0; i < n; ++i) {
        printf("%d ", a[i]);
    }
    return 0;
}

代码中使用了快速排序的思路,通过确定一个轴进行分治计算,最后进行排序完成。

七、蓝桥杯波动数列

蓝桥杯波动数列是一道比较少见的蓝桥杯数列题目,题目描述:输入n和n个数,将这n个数依次看做折线上纵坐标,求这个折线图中交点的数量。

以下是该题的C语言代码实现:

#include<stdio.h>

int main() {
    int n, a[101], cnt = 0;
    scanf("%d", &n);
    for(int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
    }
    for(int i = 1; i < n - 1; ++i) {
        if((a[i] - a[i - 1]) * (a[i + 1] - a[i]) < 0) {
            ++cnt;
        }
    }
    printf("%d", cnt);
    return 0;
}

代码中通过遍历数组计算出所有的交点,输出计数器的值作为结果。

八、蓝桥杯等差数列

蓝桥杯等差数列是之前讲解到的蓝桥杯数列题目,以下是不同于选择排序的另一种等差数列排序的C语言实现:

#include<stdio.h>
#include<stdlib.h>

int cmp(const void* a, const void* b) {
    return *(int*)a - *(int*)b;
}

int main() {
    int n, a[101];
    scanf("%d", &n);
    for(int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
    }
    qsort(a, n, sizeof(int), cmp);
    int d = a[1] - a[0];
    for(int i = 2; i < n; ++i) {
        if(a[i] - a[i - 1] != d) {
            printf("Impossible");
            return 0;
        }
    }
    printf("%d", a[0] + (n - 1) * d);
    return 0;
}

代码中使用了快速排序的库函数qsort()进行了从小到大的排序,然后再进行等差判断。如果相邻两项不等于公差,则判定不是等差数列,输出Impossible,否则计算出数列的最后一项并输出。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/156516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-18 01:56
下一篇 2024-11-18 01:56

相关推荐

  • 计算斐波那契数列的时间复杂度解析

    斐波那契数列是一个数列,其中每个数都是前两个数的和,第一个数和第二个数都是1。斐波那契数列的前几项为:1,1,2,3,5,8,13,21,34,…。计算斐波那契数列常用…

    编程 2025-04-28
  • Python实现斐波那契数列前20项

    本文将介绍如何使用Python实现斐波那契数列前20项的计算。 一、什么是斐波那契数列 斐波那契数列是指每个数字都是前两个数字之和的数列,起始数为0和1,例如:0, 1, 1, 2…

    编程 2025-04-27
  • 蓝桥杯砝码称重

    一、砝码称重的目的和应用 1、砝码称重可以用于不同领域的精确度量,例如在实验室中用于测量化学物质的质量,工业生产中用于计量重量建筑材料的质量等。 2、砝码称重还可以用于计算机编程中…

    编程 2025-04-23
  • 第十二届蓝桥杯c语言b组,第九届蓝桥杯c语言b组

    本文目录一览: 1、蓝桥杯含金量怎么样? 2、蓝桥杯c语言b组什么水平 3、蓝桥杯b组国二什么水平 4、蓝桥杯a组和b组难度相差大吗 蓝桥杯含金量怎么样? 含金量还不错,因为行业认…

    编程 2025-01-14
  • c语言参数求值,C语言中参数

    本文目录一览: 1、C语言实参求值顺序。。。 2、C语言求值 3、c语言参数求值顺序 C语言实参求值顺序。。。 楼主fun(m+3,m++);与fun(m+3,++m);都是所谓“…

    编程 2025-01-13
  • c语言表达式6ab,C语言表达式求值

    本文目录一览: 1、C语言表达式 2、A=B=6是否可作为C语言的赋值语句 3、c语言表达式 4、我记得c语言中a=b=6;这个表达式是不对的,为什么我在vc中可以实现呢?这个表达…

    编程 2025-01-11
  • 蓝桥杯java试题(蓝桥杯JAVA题目)

    本文目录一览: 1、蓝桥杯单片机编程题怎么给分 2、蓝桥杯java比赛时,题目会给出cpu时间限制,如何确定程序运行时间 3、蓝桥杯java b一共多少题 4、蓝桥杯有选择题吗 5…

    编程 2025-01-11
  • java实现单调数列(单调递增的数字java)

    本文目录一览: 1、单调队列怎么用java实现 2、java编程实现输出fibonacci数列(要求利用数组实现)的前30项 3、java如何生成一组随机的不重复的数列? 单调队列…

    编程 2025-01-03
  • 编写程序计算如下数列的值

    一、编写程序计算两个数的和 编写程序实现两个数的和,可以通过用户输入两个数,然后将它们相加,最后输出它们的和。 #include <stdio.h> int main(…

    编程 2025-01-03
  • java斐波那契数列,java斐波那契数列编程

    本文目录一览: 1、Java斐波那契数第35个数,流程图加代码? 2、java 斐波那契数列 3、JAVA程序的费波纳茨数列是什么原理? 4、java语言解决斐波那契数列问题 Ja…

    编程 2024-12-29

发表回复

登录后才能评论