试题 A: 九进制转十进制

本题总分:5 分
【问题描述】
九进制正整数2022转换成十进制等于多少?

1
2
3
4
5
6
7
8
9
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
t=2*pow(9,3)+2*9+2;
cout<<t;
return 0;
}

试题 B: 顺子日期

本题总分:5 分
【问题描述】
小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日
期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022年份中,一共有多少个顺子日期。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
20220120
20220121
20220122
20220123
20220124
20220125
20220126
20220127
20220128
20220129
20221012
20221123
20221230
20221231
14

试题 C: 刷题统计

时间限制: 1.0s 内存限制: 256.0MB 本题总分:10 分
【问题描述】
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天
做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
【输入格式】
输入一行包含三个整数 a, b 和 n.
【输出格式】
输出一个整数代表天数。
【样例输入】
10 20 99
【样例输出】
8
【评测用例规模与约定】
对于 50% 的评测用例,1 ≤ a, b, n ≤ 1e6.
对于 100% 的评测用例,1 ≤ a, b, n ≤ 1e18.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n,m,k,t,chu,mo,flag=0;
cin>>n>>m>>k;
t=n*5+m*2;
chu=k/t;
chu*=7;
mo=k%t;
if(mo>0){
for(int i=1;i<=5;i++){
if(mo<i*n){
chu+=i;
flag=1;
break;
}
}
for(int i=1;i<=2;i++){
if(mo<i*m+n*5&&flag==0){
chu+=i+5;
break;
}
}
}
cout<<chu;
return 0;
}

试题 D: 修剪灌木

时间限制: 1.0s 内存限制: 256.0MB 本题总分:10 分
【问题描述】
爱丽丝要完成一项修剪灌木的工作。
有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌
木,让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。灌木每天从早上到傍晚会长高 1 厘米,而其余时间不会长高。在第一天的早晨,所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高。
【输入格式】
一个正整数 N ,含义如题面所述。
【输出格式】
输出 N 行,每行一个整数,第行表示从左到右第 i 棵树最高能长到多高。
【样例输入】
3
【样例输出】
4
2
4
【评测用例规模与约定】
对于 30% 的数据,N ≤ 10.
对于 100% 的数据,1 < N ≤ 10000.

1
2
3
4
5
6
7
8
9
10
11
12
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
cout<<2*max(i-1,n-i)<<endl;
}
return 0;
}

试题 F: 统计子矩阵

时间限制: 1.0s 内存限制: 256.0MB 本题总分:15 分
【问题描述】
给定一个 N × M 的矩阵 A,请你统计有多少个子矩阵 (最小 1 × 1,最大
N × M) 满足子矩阵中所有数的和不超过给定的整数 K?
【输入格式】
第一行包含三个整数 N, M 和 K.
之后 N 行每行包含 M 个整数,代表矩阵 A.
【输出格式】
一个整数代表答案。
【样例输入】
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 个。
【评测用例规模与约定】
对于 30% 的数据,N, M ≤ 20.
对于 70% 的数据,N, M ≤ 100.
对于 100% 的数据,1 ≤ N, M ≤ 500; 0 ≤ Ai j ≤ 1000; 1 ≤ K ≤ 250000000.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<bits/stdc++.h>
using namespace std;
int a[2100][2100],s[2100][2100];
int main()
{
int n,m,k,ret=0,cnt=0;
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+a[i][j];
for(int i=1;i<=n;i++){//x1
for(int f=i;f<=n;f++){//x2
for(int j=1;j<=m;j++){//y1
for(int b=j;b<=m;b++){//y2
ret=a[f][b]-a[f][j-1]-a[i-1][b]+a[i-1][j-1];
if(ret<=k)
cnt++;
}
}
}
}
cout<<cnt;
return 0;
}