目录

1 报名

学校计算机老师来找我,嗯我觉得反正这段时间也没参加过啥大比赛,于是简单问了问题目难度啥的就报了,

300块钱没了QAQ

2 赛前准备

由于一直是线上学习,然后呢刚开始(五月初)学了一些动规和图论,然后也没怎么刷题,一直是处于摸鱼的状态中。然后五月中旬刷了几道水题,五月下旬就在疯狂的补作业,所以一直没怎么准备。

(身边好几个朋友说:“你特么个班长,起到了良好的带头作用【滑稽】”)

3 意外事件

有那么几天我甚至忘记了我还有个比赛,然后比赛前一天幸亏老师提醒上去测试一下,才发现老师没发给我准考证awa

发现是周六13.30到15.30,和别的课冲突了,于是去调课。

4 赛前90分钟

12点10分才下上午的课,然后10分钟吃饭,10分钟翻出家里头一个三脚架,因为比赛时需要从后方45°拍摄视频,要求露出上半身和双手,用腾讯会议监控www

然后12.30多入场(就是入会)经过了20来分钟的角度调试和电脑登陆啊乱七八糟的东西,终于准备好了

然后还有半个小时,我打算复习一下(没错还剩半个小时我才想起来复习2333)然后自己也没有完整的笔记,就上网上搜,也没啥,于是找到了自己以前教一个同学列的一个表,顺着复习一下

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
1. 输出
2. 变量
2.1 基本数据类型
2.2 数据类型转化
2.2.1 自动类型转换
2.2.2 强制类型转换
2.3 运算
3. 输入
4. if语句
4.1 逻辑运算符
4.2 if语句
4.2.1 if语句
4.2.2 if...else语句
4.2.3 if...else if...else if... ... ... else语句
5. 循环
5.1 while循环
5.1.1 while循环
5.1.2 do-while循环
5.2 for循环
5.2.1 单层循环
5.2.2 嵌套循环
6. 文件操作
7. 一维数组
7.1 数组
7.2 有关数组的函数
8.二维数组
9.字符串
9.1 字符数组
9.2 字符串
10. c风格输入输出
11. 结构体
12. 函数
13. 递归
14. 递推

真的很简单,我觉得初级组应该也就会考这些了。。。

要是考算法我就凉凉了

数据结构和指针应该不会考

毕竟是初级组
然后字符串一直是我不擅长的,于是就又复习了一下以前的代码,贴在下面:

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<iostream>
#include<string>
using namespace std;
int main(){
//直接使用cin
//不可带空格
/*
string str;
cin>>str;
cout<<str;
*/
//若要带空格,使用
//getline(cin,变量名 )
/*
string str;
getline(cin,str);
cout<<str;
*/


//字符串长度 变量名.size();
/*
string a = "computer";
cout<<a.size();
*/


//查找
//被查找的变量.find(查找的变量);
/*
string str0 = "abcbcbc";
string str1 = "bc";
string str2 = "xy";
int pos = str0.find(str1);
cout<<pos<<endl;
pos = str0.find(str2);
if(pos == string::npos){
cout<<"yes";
}
*/


//替换 字符串变量名.relpace(替换的启示下标,被替换的长度,替换的字符串);
/*
string str0 = "abcbcw";
string str1 = "xy";
// a bcbc->xy w
str0.replace(1,4,str1);
// a xy w
cout<<str0;
*/


//截取
//字符串变量名.substr(截取的起始下标,截取长度);



return 0;
}


好像文件丢了一些,不管怎么着能复习一点就行

然后怕卡时间,又看了一下c的输入输出
(printf 和 scanf)

然后就开始考试了awa

5 赛时

五道选择题,4道编程题,

选择

先做选择题:好像不难,但是由于我还没有准备oi的初赛,所以好多基础知识做不上来QAQ

我列举三道我还记得的题吧

90-100的素数有几个

  • A 0
  • B 1
  • C 2
  • D 3

众所周知,90-100中只有一个97是质数

然后。。。我居然一时脑子抽,把91误认为质数了。。。

不过没关系

还有一道是进制转换

让在几个不同进制的数里头选一个最小的

八进制的我转过来了(从左往右第一位位数乘8再加上第二位)
十六进制的转过来了(方法同八)

十进制不用转

以上都是侥幸的出现的两位数

然后有一个二进制101000

我不会转了

但是我会把10进制转2进制

然后从上面那三个里头的最小的,转成2进制:

101010

great

101010 > 101000

所以做出来了。。
真侥幸啊。。。

还有一个关于ip地址的

幸亏以前有了解一点点网络安全方面的知识

总之还是挺幸运的。

编程

一共四道题,一一说一下:

第一题:

输入一个分数,大于等于90,输出A,大于等于80输出B,大于等于70输出C,70以下输出D

真简单,几个if就行

二话不说上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
int n;
int main () {
cin >> n;
if(n >= 90){
cout << "A";
}else if(n >= 80){
cout << "B";
}else if(n >= 70){
cout << "C";
}else{
cout << "D";
}
return 0;
}

由于赛时全程录屏+后台检测,所以不敢复制题目下来,凭记忆打出来的,别追求严谨性了,能看懂就行

第二题

输入一个高度,一个铁球从这个高度下降,每弹一次,高度减少一半,第10次弹起后离地的高度和铁球走过的距离(不包括第十次落下的距离)

嗯不是很难,稍微分析一下即可

然后我在这道题上居然卡了10分钟?!

题太水,不想过度讲解www

原始代码:是错的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int n;
int main () {

cin >> n;
double m, ms = n;
for( int i = 0; i < 8; i++ ){
n /=2;
ms += 2*n;
}
m = n;
ms += n;
cout << m << endl;
cout << ms;

return 0;
}

修改后:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int n;
int main () {

cin >> n;
double m, ms = n;
for( int i = 0; i < 9; i++ ){

n /= 2;
ms += 2*n;
}
m = n/2;
ms += n/2;
cout << m << endl;
cout << ms;

return 0;
}

另外写了个生成数据和检测答案的程序(俗称对拍):

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
using namespace std;
int n;
int main () {
cin>>n;
int ans = n;
for(int i=0;i<10;i++){
n*=2;
ans += n;
}
cout<<n<<ans;
return 0;
}

于是愉快的ac喽

第三题:

输入10个数,输出他们的最大值,最小值,平均值,用逗号分割

太过简单了,不上代码了。。。

其实是文件丢了,不想再写了

第四题:
这个真的是。。。先看题吧

输入一个数,输出这个数以内的所有回文数

看着很简单

我记得半年前在洛谷上做过类似的www

先不管洛谷上的,先说说我是怎么做的

首先尝试了常规做法。。。不行

用string。。。不行

我太菜了

于是打算暴力打表

毕竟

暴力出奇迹

然后简单打了个表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
int n = 10;
int main () {
for( int i=1;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
cout<<i<<j<<k<<k<<j<<i<<",";
}
}
}
return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
int n = 10;
int main () {
for( int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
for(int q=0;q<n;q++){
cout<<i<<j<<k<<q<<k<<j<<i<<endl;
}
}
}
}
return 0;
}

成果:大量数字来袭

1
2

int aaa[10000000] = {1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99,101,111,121,131,141,151,161,171,181,191,202,212,222,232,242,252,262,272,282,292,303,313,323,333,343,353,363,373,383,393,404,414,424,434,444,454,464,474,484,494,505,515,525,535,545,555,565,575,585,595,606,616,626,636,646,656,666,676,686,696,707,717,727,737,747,757,767,777,787,797,808,818,828,838,848,858,868,878,888,898,909,919,929,939,949,959,969,979,989,999,1001,1111,1221,1331,1441,1551,1661,1771,1881,1991,2002,2112,2222,2332,2442,2552,2662,2772,2882,2992,3003,3113,3223,3333,3443,3553,3663,3773,3883,3993,4004,4114,4224,4334,4444,4554,4664,4774,4884,4994,5005,5115,5225,5335,5445,5555,5665,5775,5885,5995,6006,6116,6226,6336,6446,6556,6666,6776,6886,6996,7007,7117,7227,7337,7447,7557,7667,7777,7887,7997,8008,8118,8228,8338,8448,8558,8668,8778,8888,8998,9009,9119,9229,9339,9449,9559,9669,9779,9889,9999,..............................省略大量数字,900009,901109,902209,903309,904409,905509,906609,907709,908809,909909,910019,911119,912219,913319,914419,915519,916619,917719,918819,919919,920029,921129,922229,923329,924429,925529,926629,927729,928829,929929,930039,931139,932239,933339,934439,935539,936639,937739,938839,939939,940049,941149,942249,943349,944449,945549,946649,947749,948849,949949,950059,951159,952259,953359,954459,955559,956659,957759,958859,959959,960069,961169,962269,963369,964469,965569,966669,967769,968869,969969,970079,971179,972279,973379,974479,975579,976679,977779,978879,979979,980089,981189,982289,983389,984489,985589,986689,987789,988889,989989,990099,991199,992299,993399,994499,995599,996699,997799,998899,999999};

然后后边的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
//这里是上面的大打表数组

int main () {
int n, sum = 0;
cin >> n;
for(int i = 0; i < n; i++){
if(aaa[i+1] > n){
cout<<aaa[i]<<endl;
sum++;
break;
}
cout<<aaa[i]<<endl;
sum++;
}
cout<<"*"<<sum;
return 0;
}

也不给个数据范围,差评

然后这题就ac了

赛后好奇的看了我洛谷以前的提交记录

嗯之前那道题是回文质数,就是在回文的基础上还是质数

题面

历史分数:100

www惊恐

继续看提交记录

提交记录

一次ac?

看一下提交记录的代码
代码

又是打表

好吧。。。

第四题正常解发代码写出来后我会写博客的。

然后这个时候才过了一个小时

呆着也是待着,不如提交了

然后就交卷了

6 赛后总结

整体来说还算可以的,但是质数的题错的很。。。然后进制转换也是很侥幸的答对了。。最后一题暴力也是不应该的。。

总结几点:

  1. 基础不牢固
  2. 以前没有记笔记写博客
  3. 做题时没有深度的思考

嗯基本就是这样

哇这篇博客源码我居然写了将近500行

好了好了就到这儿了

附:qq号:3242954996
愿意带我的大佬可以加我鸭
蒟蒻也可以和我一起学习awa

the end.
by X3B0A1
2020.5.30