百题 其一

L1部分

1.打印沙漏

找规律,记得观察每行的规律,然后就是等差求和和公式的运用

L1-002 打印沙漏 - 团体程序设计天梯赛-练习集

2.个位数统计

哈希表通过数组存储每个元素出现的次数

L1-003 个位数统计 - 团体程序设计天梯赛-练习集

3.计算摄氏温度

注意输出格式

L1-004 计算摄氏温度 - 团体程序设计天梯赛-练习集

4.考试座位号

用结构体做,不超时,但是开字符串数组的时候一定要把末尾的’\0’终止符算进去即16+1=17

L1-005 考试座位号 - 团体程序设计天梯赛-练习集

5.念数字

二维字符数组,然后字符和数字的转换,负号特判

L1-007 念数字 - 团体程序设计天梯赛-练习集

6.求整数段和

这道题主要是特判,要注意换行,看看最后一行是5个刚好还是不满5个,然后就是5个字符的格式,用%5d填充

L1-008 求整数段和 - 团体程序设计天梯赛-练习集

7.A-B

这道题还是用那种类似哈希表的把b串的ascll码存储起来,然后对应删除a串的值即可

需要注意的是cin>>读取字符串遇到空格会停下来,得用**cin.getline(a,n);**a是字符串变量,n是大小

L1-011 A-B - 团体程序设计天梯赛-练习集

8.跟奥巴马一起画方块

注意四舍五入

L1-015 跟奥巴马一起画方块 - 团体程序设计天梯赛-练习集

9.查验身份证

这题要注意的主要是每次判断的时候如果不是直接在那个条件下输出即可,不用搞那么麻烦

L1-016 查验身份证 - 团体程序设计天梯赛-练习集

10.到底有多二

这道题注意,我方法求的len是不包括’\0’的,就是字符串的长度,然后有些案例是负数的时候要特别地判断,此时位数是len-1

L1-017 到底有多二 - 团体程序设计天梯赛-练习集

11.大笨钟

这道题注意的就是每个时间段敲和不敲,特别是边界的时候。然后%.02d补零操作

L1-018 大笨钟 - 团体程序设计天梯赛-练习集

12.输出GPLT

字符与索引间的转换要注意

L1-023 输出GPLT - 团体程序设计天梯赛-练习集

13.判断素数

这题就是注意素数不包括0和1

14.到底是不是太胖了

这题注意范围,绝对值

L1-031 到底是不是太胖了 - 团体程序设计天梯赛-练习集

15.点赞

哈希

L1-034 点赞 - 团体程序设计天梯赛-练习集

16.情人节

条件判断的时候按小到大来判断

然后截止标点是.的时候可以

1
2
3
while(scanf("%s",a[len]) && strcmp(a[len],".")){
len++;
}

L1-035 情人节 - 团体程序设计天梯赛-练习集

17.古风排版

这题比较复杂

思路是创一个二维数组,搞上去就好,先用vector开一个二维的被空格填充的数组,然后就是方向有些绕

1
2
vector<string> a(n,string(k," "));

这里要注意的是,cin>>n后如果再用cin.getline()去取字符串,**先用下cin.ingore()**,不然他读到换行符自动就不读了会出错

L1-039 古风排版 - 团体程序设计天梯赛-练习集

18.整除光棍***

L1-046 整除光棍 - 团体程序设计天梯赛-练习集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bits/stdc++.h>

using namespace std;

int main(){
int x;
cin>>x;
long long int num=1;
int n=1;
while(num%x!=0){
num=(num*10+1)%x;
n++;
}
long long int s=0;
for(int i=0;i<n;++i){
s+=pow(10,i);
}
s/=x;
cout<<s<<" "<<n;
return 0;
}

19.矩阵A*B ***

这题主要是矩阵乘积的求法,大小开100足以

L1-048 矩阵A乘以B - 团体程序设计天梯赛-练习集

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
30
31
32
33
34
35
36
37
38
39
40
41
#include<stdio.h>
int a[100][100];
int b[100][100];
int c[100][100];

int main(){
int r1,r2,c1,c2;

scanf("%d %d",&r1,&c1);
for(int i=0;i<r1;++i){
for(int j=0;j<c1;++j){
scanf(" %d",&a[i][j]);
}
}
scanf(" %d %d",&r2,&c2);
for(int i=0;i<r2;++i){
for(int j=0;j<c2;++j){
scanf(" %d",&b[i][j]);
}
}
if(c1!=r2){
printf("Error: %d != %d",c1,r2);
return 0;
}
for(int i=0;i<r1;++i){
for(int j=0;j<c2;++j){
for(int m=0;m<c1;++m){
c[i][j]+=a[i][m]*b[m][j];
}
}
}
printf("%d %d\n",r1,c2);
for(int i=0;i<r1;++i){
for(int j=0;j<c2;++j){
printf("%d",c[i][j]);
if(j!=c2-1) printf(" ");
}
printf("\n");
}
return 0;
}

20.幸运彩票

这题主要在输入案例的时候一连串数字可能不是整形的形式,要用字符型进行输入

L1-062 幸运彩票 - 团体程序设计天梯赛-练习集

21.大笨钟的心情

这题注意p=0,别用while(p)作为条件即可

22.天梯赛的善良

直接做如果循环遍历保定超时

还是用到之前那种hx思想,但是就是在这基础上直接比较即可,不用循环来找最大最小

L1-079 天梯赛的善良 - 团体程序设计天梯赛-练习集

L2部分

1.并查集的模版

2.二叉树见前序加中序构成后序模版

2.5 二叉树见前序输出其后序

3.map函数以及遍历

4.vector<queue(int)>动态数组队列

5.queue < int > q队列

6.两边扩散

002,004,005,006,007,008,009,011,012,014,016*,020