2018年计蒜客蓝桥杯模拟赛(2018.3.25)题解(未完待续)

本文提供了2018年蓝桥杯模拟赛的题目解析,包括矩阵求和、素数个数、连连看、快速幂等算法问题的详细解答。通过分析和代码实现,帮助读者理解和掌握相关算法思想和优化技巧。
摘要由CSDN通过智能技术生成

(题解参考:2018年蓝桥杯模拟赛第五场题解  by islands)

一、题目列表

1. (3')矩阵求和

        给你一个n×n的矩阵,里面填充1到n×n。例如当n等于3的时候,填充的矩阵如下。
        1 2 3
        4 5 6
        7 8 9
        现在我们把矩阵中的每条边的中点连起来,这样形成了一个新的矩形,请你计算一下这个新的矩形的覆盖的数字的和。比如,n=3的时候矩形覆盖的数字如下。
           2
        4 5 6
           8
        那么当 n 等于 101 的时候,矩阵和是多少?

2. (9')素数个数

        用 0,1,2,3, ... , 7 这8个数组成的所有整数中,质数有多少个(每个数字必须用到且只能用一次)。
        提示:以 0 开始的数字是非法数字。

3. (11')连连看

        连连看是一款非常有意思的游戏。

        我们可以把任意两个在图的在边界上的相同的方格一起消掉,比如把两个 4 消掉以后,


        每次消掉两个方格的时候,都有会获得一个分数,第 i 次消的分数为 i×方格的值 。比如上面的消法,是第一次消,获得的分数为1×4=4。

        请你帮忙计算最优操作情况下,获得的分数最多为多少。

4. (7')快速幂

        一个数的整数次幂,是我们在计算中经常用到的,但是怎么可以在 O(log(n)) 的时间内算出结果呢?

        代码框中的代码是一种实现,请分析并填写缺失的代码,求 x^y mod p 的结果。

#include <stdio.h>

int pw(int x, int y, int p) {
    if (!y) {
        return 1;
    }
    int res = /*在这里填写必要的代码*/;
    if (y & 1) {
        res = res * x % p;
    }
    return res;
}
int main() {
    int x, y, p;
    scanf("%d%d%d", &x, &y, &p);
    printf("%d\n", pw(x, y, p));
    return 0;
}

5. (13')末尾零的个数

        N! 末尾有多少个 0 呢? N!=1×2××N

        代码框中的代码是一种实现,请分析并填写缺失的代码。

#include <stdio.h>
int main() {
    int n, ans = 0;
    scanf("%d", &n);
    while (n) {
        ans += /*在这里填写必要的代码*/;
    }
    printf("%d\n", ans);
    return 0;
}

6. (16')藏宝图


        蒜头君得到一张藏宝图。藏宝图是一个 10×10 的方格地图,图上一共有 10 个宝藏。有些方格地形太凶险,不能进入。

        整个图只有一个地方可以出入,即是入口也是出口。蒜头君是一个贪心的人,他规划要获得所有宝藏以后才从出口离开。

        藏宝图上从一个方格到相邻的上下左右的方格需要 1 天的时间,蒜头君从入口出发,找到所有宝藏以后,回到出口,最少需要多少天。

7. (15')合并数字

        蒜头君得到了 n 个数,他想对这些数进行下面这样的操作,选出最左边的相邻的差的绝对值为 1 的两个数,只保留较小的数,删去较大的数,直到没有两个相邻的差的绝对值为 的数,问最多可以进行多少次这样的操作?

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值