蓝桥杯2022b

2031: [蓝桥杯2022初赛] 九进制转十进制

题目描述

九进制正整数(2022) 转换成十进制等于多少?

这是一道结果填空的题,你只需要算出结果后提交即可。

本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。

题目解析

将数字转成十进制数字,九进制每位权重为9的n次方

sum=2*9^0+2*9^1+0*9^2+2*9^3=1478

2032: [蓝桥杯2022初赛] 顺子日期

题目描述

小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。

顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。

例如20220123 就是一个顺子日期,因为它出现了一个顺子:123;

本题顺子的定义:i j k 是一个顺子,满足 i+1=j、j+1=k、i≥0

而20221023 则不是一个顺子日期,它一个顺子也没有。

小明想知道在整个2022年份中,一共有多少个顺子日期。

这是一道结果填空的题,你只需要算出结果后提交即可。

本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。

题目解析

由于年份是2结束,无须考虑年和月之间的顺子,只需分类考虑月份,根据月份判断是否有合适的日期能凑成顺子大于三的日期

所以2022012X(0<=X<=9), 20221012, 20221123,2022123x(x=0,x=1)

共十四个

2033: [蓝桥杯2022初赛] 刷题统计

题目描述

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。

他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。

请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?

输入格式

输入一行包含三个整数a, b 和n.

50% 的评测用例:1 ≤ a, b, n ≤ 10^6;

100% 的评测用例:1 ≤ a, b, n ≤ 10^18。

输出格式

输出一个整数代表天数。

输入样例 复制
10 20 99
输出样例 复制
8
题目解析

由于n的数值较大,且a,b可能较小,不能建立数组暴力循环,可先n/(a+b)算出需要几个完整的星期,day+=n/(a+b)*7,再考虑n%(a+b)剩下的题目需要几天去完成(可用数组,也可以星期一到星期五与星期天分类两组循环完成。

2034: [蓝桥杯2022初赛] 修剪灌木

题目描述

爱丽丝要完成一项修剪灌木的工作。

有 N 棵灌木整齐的从左到右排成一排。

爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为 0 厘米。

爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。

当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。

直到修剪了最左的灌木后再次调转方向。然后如此循环往复。

灌木每天从早上到傍晚会长高 1 厘米,而其余时间不会长高。

在第一天的早晨,所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高。

输入格式

一个正整数N ,含义如题面所述。

30%的测试数据:1<N≤10;

100%的测试数据:1<N≤10000。

输出格式

输出 N 行,每行一个整数,第 i 行表示从左到右第 i 棵树最高能长到多高。

输入样例 复制
3
输出样例 复制
4
2
4

题目解析

树高的最大值是在修剪后到下一次修剪前到达最大值,有两种方式,一种是向左,另一种是向右,判断idx的位置离哪个端点远,最大值即2*(idx(当前)-idx(远端点))

2035: [蓝桥杯2022初赛] X进制减法
题目描述

进制规定了数字在数位上逢几进一。

X 进制是一种很神奇的进制,因为其每一数位的进制并不固定!

例如说某种X 进制数,最低数位为二进制,第二数位为十进制,第三数位为八进制:

则 X 进制数321 转换为十进制数为65。65=3*(2*10)+2*(2)+1*(1)。

现在有两个 X 进制表示的整数 A 和 B,但是其具体每一数位的进制还不确定。

只知道 A 和 B 是同一进制规则,且每一数位最高为 N 进制,最低为二进制。

请你算出 A − B 的结果最小可能是多少。

请注意,你需要保证 A 和 B 在 X 进制下都是合法的,即每一数位上的数字要小于其进制。

输入格式

第一行一个正整数 N,含义如题面所述。

第二行一个正整数 Ma,表示 X 进制数 A 的位数。

第三行 Ma 个用空格分开的整数,表示 X 进制数 A 按从高位到低位顺序各个数位上的数字在十进制下的表示。

第四行一个正整数 Mb,表示 X 进制数 B 的位数。

第五行 Mb 个用空格分开的整数,表示 X 进制数 B 按从高位到低位顺序各个数位上的数字在十进制下的表示。

请注意,输入中的所有数字都是十进制的。

30%的测试数据:2≤N≤10,1≤Ma,Mb≤8。

100%的测试数据:2≤N≤1000,1≤Ma,Mb≤100000,B≤A。

输出格式

输出一行一个整数,表示X 进制数A − B 的结果的最小可能值转换为十进制后再模1000000007 的结果。

输入样例 复制
11
3
10 4 0
3
1 2 0
输出样例 复制
94
数据范围与提示

当进制为:最低位 2 进制,第二数位 5 进制,第三数位 11 进制时,减法得到的差最小。

此时A 在十进制下是108,B 在十进制下是 14,差值是 94。

题目解析

由于a>b;所以a-b>0;

只需考虑正数在什么进制为最小,当然是每个进制尽可能的小,所以判断aa[i],bb[i],谁小,当前进制即min+1;

代码

#include<iostream>
#define F(i,l,r) for(int i=l;i<=r;++i)
using namespace std;
int aa[1000010];
int bb[1000010];
int re[1000010];
int jz[1000010];
long long sum = 0;
long long zjz = 1;

int main()
{
    int n;
    cin >> n;

    int ma;
    cin >> ma;
    F(i, 1, ma)
    {
        cin >> aa[i];
        jz[i] = aa[i];

    }

    int mb;
    cin >> mb;
    F(i, ma - mb+1, ma)
    {
        cin >> bb[i];
        if (jz[i] < bb[i])
            jz[i] = bb[i];
    }


    F(i, 1, ma)
    {

        jz[i]++;
        if (jz[i] < 2)
            jz[i] = 2;
    }
    jz[ma + 1] = 1;

    for(int i=ma;i>=1;--i)
    {
        re[i] = aa[i] - bb[i];
        if (re[i] < 0)
        {
            re[i] += jz[i];
            aa[i - 1]--;

        }
        zjz *= jz[i + 1];
        if (zjz > 1000000007)
            zjz %= 1000000007;


        sum += zjz * re[i];


        if (sum >= 1000000007)
            sum %= 1000000007;

    }

    cout << sum;

    return 0;
}

2036: [蓝桥杯2022初赛] 统计子矩阵

题目描述

给定一个 N × M 的矩阵A,请你统计有多少个子矩阵(最小 1 × 1,最大 N × M) 满足:

子矩阵中所有数的和不超过给定的整数K?

输入格式

第一行包含三个整数N, M 和K.

之后 N 行每行包含 M 个整数,代表矩阵A.

30%的测试数据:1≤N,M≤20;

70%的测试数据:1≤N,M≤100;

100%的测试数据:1≤N,M≤500;0≤Aij≤1000;1≤K≤250000000。

输出格式

一个整数代表答案。

输入样例 复制
3 4 10
1 2 3 4
5 6 7 8
9 10 11 12
输出样例 复制
19
数据范围与提示

满足条件的子矩阵一共有19,包含:

大小为1 × 1 的有10 个。

大小为1 × 2 的有3 个。

大小为1 × 3 的有2 个。

大小为1 × 4 的有1 个。

大小为2 × 1 的有3 个。

题目解析

由于1≤N,M≤500,所以暴力循环行不通,可考虑二维前缀和

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值