ACM实训冲刺第一天

目录

ACM实训课程考核

考核内容

备赛安排

推荐学习资源

ACM实训准备规划

前话

历届习题(未曾改变)

第0套

第1套

第2套

第3套

第4套

规划

5.8 - 5.12 (11周)

5.13-5.19(12周)

5.20-5.26(13周)

5.27-6.2(14周)

 5.8 学习

基础回顾:基本语法

1.输入输出

2.基本运算

 3.循环语句

4. 分支和条件

 5.函数

 6.数组

第0套题详解(SUM Problem 、 A+B problem)

SUM Problem

问题

思路

代码 

 A+B problem

问题

思路

代码


ACM实训课程考核

考核内容

项目参照ACM-ICPC竞赛的评价规则进行考核,即学生在指定地点和规定时间内完成给出的程序设计题目,并按照最终通过的题目数量及时间进行等级评分。

备赛安排

1)预备阶段 了解ACM程序设计竞赛的基本流程,掌握并参与ACM程序设计竞赛的基本步骤。(VJudge) 第11周完成。

2)练习阶段 总结相关算法知识,并进一步学习及强化。(自习)

练习一定数量的ACM程序设计竞赛题目。(VJudge)

每周1次练习赛(周日晚7:00-9:00)。(VJudge) 第11-14周完成。

3)考核阶段 现场比赛(STU OJ) 第15周完成。

推荐学习资源

视频资源1: 蓝桥杯ACM算法竞赛辅导 https://www.bilibili.com/video/BV174411D7SK

视频资源2 算法讲堂(电子科技大学) https://space.bilibili.com/7711573/channel/seriesdetail?sid=1071937


ACM实训准备规划

前话

本人对算法一窍不通,虽苦苦挣扎3年,但还是始终处于小白的感觉,故本系列仅为我顺利通过ACM实训课程备考和复习服务,仅供大家参考即可

历届习题(未曾改变)

第0套

第1套

第2套

Anton and Danik、人见人爱A^B、Tokitsukaze and All Zero Sequence、Aggressive cows、Brainman、Tokitsukaze and Good 01-String (hard version)

第3套

统计元音、Let the Balloon Rise、Election Time、0-1 Knapsack Problem、Drying、N皇后问题

第4套

Digit Counting、Add All、Oil Deposits、Dungeon Master、Is It A Tree?、Global Raining at Bididibus

规划

5.8 - 5.12 (11周)

  1. 掌握第0套和第1套的习题
  2. 在5.12之前熟练理解并会编写上述习题,理清思路
  3. 看ACM社团录制视频基础部分,进行回顾
  4. 完成蓝桥杯ACM算法竞赛辅导1-2讲视频,将其java转为c语言
  5. 进行必要的算法练习,举一反三

5.13-5.19(12周)

  1. 复习第0套和第1套的习题,以及上周所掌握的知识
  2. 掌握第2套的习题
  3. 在5.19之前熟练理解并会编写上述习题,理清思路
  4. 看ACM社团录制视频基础部分,进行回顾
  5. 完成蓝桥杯ACM算法竞赛辅导3-5讲视频,将其java转为c语言
  6. 进行必要的算法练习,举一反三

5.20-5.26(13周)

  1. 复习第1套和第2套的习题,以及上周所掌握的知识
  2. 掌握第3套的习题
  3. 在5.26之前熟练理解并会编写上述习题,理清思路
  4. 看ACM社团录制视频基础部分,进行回顾
  5. 完成蓝桥杯ACM算法竞赛辅导6-7讲视频,将其java转为c语言
  6. 进行必要的算法练习,举一反三

5.27-6.2(14周)

  1. 进入复习阶段,对前3周所学内容进行差缺补漏
  2. 掌握第4套的习题
  3. 在6.2之前熟练理解并会编写上述习题,理清思路
  4. 看ACM社团录制视频基础部分,进行回顾
  5. 观看算法讲堂
  6. 进行必要的算法练习,举一反三

 5.8 学习

【碎碎念】今天学习任务量较为轻松,明天可能会需要开始做项目,故今天学习多一些。。。

基础回顾:基本语法

1.输入输出

#include<stdio.h>int main(){// 将数字字符转为数字char c;scanf("%c",&c);scanf("%d",c-'0');return 0;
}
  1. 所有变量都要先声明再使用,声明的时候注意命名规范
  2. main函数忘记加返回值
  3. 记得加分号
  4. 区分中英文标点

2.基本运算

++a 相当于 a=a+1

 逻辑运算符(用在条件上面)

 类型转换 

#include <stdio.h>
int main( ){//数字反转char a,b,c,d;scanf("%c%c%c.%c",&a,&b,&c,&d);printf("%c.%c%c%c",d,c,b,a);return 0;
}

 3.循环语句

#include<stdio.h>
int main(){//循环 一尺之锤int a, day=1;scanf("%d",&a);while(a>1){a = a/2;day = day +1;//天数加一}printf("%d",day);return 0;
}
#include<stdio.h>
int main(){//寻找最小值int n , min =1000;scanf("%d",&n);for(int i=1 ; i<=n ; i++){int tmp;scanf("%d",&tmp);if(tmp < min) min = tmp ;}printf("%d",min);return 0 ;
}

4. 分支和条件

闰年的判断

#include<stdio.h>
int main(){int year;//输入yearscanf("%d",&year);//判断能否被4整除if (year % 4 == 0){//判断能否被400整除if (year % 100 != 0 ){printf("1");}else if(year % 400 == 0 ){printf("1");}else{printf("0");}}else{printf("0");}return 0;
}

 5.函数

#include<stdio.h>//函数事先要声明
int add(int a,int b)int main(){int m = 2, n = 7;int res = add(m,n);return 0;
}int add(int a, int b){return a+b;
}

 6.数组

 

第0套题详解(SUM Problem 、 A+B problem)

SUM Problem

问题

在这个问题中,你的任务是计算SUM(n) = 1 + 2 + 3 +…+ n。
输入
输入将由一系列整数n组成,每行一个整数。
输出
对于每种情况,在一行中输出SUM(n),后面跟着一个空行。您可以假设结果将在32位有符号整数的范围内。

思路

每输入一个数,输出当前已经输入的所有数据的和。需要注意判断是否读到结尾

代码 
#include<stdio.h>
int main(){//声明变量   int n,sum;//循环输入while(scanf("%d",&n)!=EOF){if(n%2==0)sum=n/2*(n+1);elsesum=(n+1)/2*n;printf("%d\n\n",sum);}return 0;
}
# include<stdio.h>int main()
{	int n;while(scanf("%d",&n)!=EOF){int sum=0;for(int i=0;i<=n;i++){sum+=i;}printf("%d\n\n",sum);}return 0;
}

 A+B problem

问题

我有个很简单的问题要问你。给定两个整数A和B,你的任务是计算A + B的和。
输入
输入的第一行包含一个整数T(1<=T<=20),它表示测试用例的数量。然后是T行,每行由两个正整数A和b组成。注意,整数非常大,这意味着您不应该使用32位整数来处理它们。您可以假设每个整数的长度不超过1000。
输出
对于每个测试用例,您应该输出两行。第一行是“Case #:”,#表示测试用例的编号。第二行是等式“A + B = Sum”,Sum表示A + B的结果。注意,在等式中有一些空格。输出两个测试用例之间的空行。

思路

读取多组输入的大整数(字符串形式),将它们相加,并以大整数的形式输出结果。

  1. 读取测试用例数量:首先读入一个整数T,表示接下来有T组大整数相加的测试用例。

  2. 循环处理每组测试用例:通过一个for循环,迭代处理T组输入。

  3. 读取大整数:对于每组测试,分别读入两个大整数number1number2,存储为字符数组。

  4. 初始化和计算

    • 初始化一个数组sum用于存放两数相加的结果及其进位,长度足够大且预先全部置零。
    • 从最低位(个位)开始,对齐或补零后逐位相加,同时处理进位。这里利用了字符串的逆序遍历,即从末尾向前遍历。
    • 如果当前位的和大于等于10,则产生进位,将该位的值变为余数,并在更高位累加进位的商。
  5. 输出结果

    • 按照指定格式输出每组测试用例的输入大整数和它们的和。
    • 注意最高位可能产生的额外进位。
代码
#include <stdio.h>
#include <string.h>
int main(){int T;scanf("%d", &T);int j,k;for (j = 1; j <= T; j++){char number1[1000];char number2[1000];int sum[1000] = {0};//置0//memset(sum, 0, sizeof(int));//int 类型怎么置0scanf("%s%s", number1, number2);int len1 = strlen(number1);int len2 = strlen(number2);int i;for (i = 0; i < len1 || i < len2; i++){if (i < len1)sum[i] += number1[len1 - i - 1] - '0';//字符转换为数字if (i < len2)sum[i] += number2[len2 - i - 1] - '0';if (sum[i] >= 10){sum[i + 1] = sum[i] / 10;sum[i] = sum[i] % 10;}}printf("Case %d:\n", j);//格式输出for (k = 0; k<len1; k++)printf("%c", number1[k]);printf(" ");printf("+");printf(" ");for (k = 0; k<len2; k++)printf("%c", number2[k]);printf(" ");printf("=");printf(" ");if (len1 < len2)//判断谁最长len1 = len2;if (sum[i]>0)printf("%d", sum[i]);//最高位产生进位for (i = len1 - 1; i >= 0; i--)printf("%d", sum[i]);printf("\n\n");}return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX 1005int main()
{int t,i,j,k,count=1;//count用来记实例序号char a[MAX],b[MAX];int na[MAX],nb[MAX];//数字数组int sum[MAX],pre;//pre表示前一位scanf("%d",&t);while(t--){memset(sum,0,sizeof(sum));memset(na,0,sizeof(na));memset(nb,0,sizeof(nb));scanf("%s%s",a,b);pre=0;int lena = strlen(a);int lenb = strlen(b);//字符串反转且字符串变数字for(i=0;i<lena;i++)na[lena-1-i] = a[i]-'0';for(j=0;j<lenb;j++)nb[lenb-1-j] = b[j]-'0';int lenx=lena>lenb?lena:lenb;//逐位相加(从最低位开始加)for(k=0;k<lenx;k++){sum[k]=na[k]+nb[k]+pre/10;pre=sum[k];}while(pre>9){sum[lenx]=pre/10%10;//最高位有了进位了lenx++;pre/=10;}printf("Case %d:\n",count++);printf("%s + %s = ",a,b);for(i=lenx-1;i>=0;i--){printf("%d",sum[i]%10);//输出每一位 每一位是sum数组中的每一项对10取余}printf("\n");if(t)printf("\n");}return 0;
}


明天学习计划:复习今天所学内容和代码,学习蓝桥杯ACM算法竞赛辅导第一讲

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/678857.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计】基于SSM++jsp的菜匣子优选系统【源码+lw+部署文档+讲解】

目录 第一章 绪 论 第二章 关键技术的研究 2.1 JSP技术介绍 2.2 JAVA简介 2.3 ECLIPSE 开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第三章 系统分析 3.1 系统设计目标 3.2 系统可行性分析 3.3 系统功能分析和描述 3.4系统UML用例分析 3.4.1管理员用例 3.4.2用户用例 3.5系统流…

远动通讯屏的作用

远动通讯屏的作用 远动通讯屏有时有称为调度数据网柜&#xff0c;远动通讯屏具体干啥作用&#xff1f;远动通讯屏是以计算机为基础的生产过程与调度自动化系统&#xff0c;可以对现场的运行设备进行监视和控制、以实现数据采集、设备测量、参数调节以及各类信号报警等各项功能。…

【Android】源码解析Activity的结构分析

源码解析Activity的结构分析 目录 1、Activity、View、Window有什么关联&#xff1f;2、Activity的结构构建流程3 源码解析Activity的构成 3.1 Activity的Attach方法3.2 Activity的OnCreate 4、WindowManager与View的关系总结 1、一个Activity对应几个WindowManage&#xff0…

软考143-下午题-【试题二】:E-R图、关系模式

一、分值与目标 15分&#xff0c;目标10 二、题目形式 示例&#xff1a; 三、E-R图的基本图形元素 示例&#xff1a; 3-1、实体 1、弱实体 在现实世界中有一种特殊的联系&#xff0c;这种联系代表实体间的所有 (Ownership) 关系&#xff0c;例如&#xff1a;职工与家属的联系…

Tuxera NTFS for Mac Mac用户无缝地读写NTFS格式的硬盘和U盘

在数字化时代&#xff0c;数据交换和共享变得日益重要。然而&#xff0c;对于Mac用户来说&#xff0c;与Windows系统之间的文件交换可能会遇到一些挑战。这是因为Mac OS默认不支持Windows常用的NTFS文件系统。幸运的是&#xff0c;Tuxera NTFS for Mac为我们提供了一个优雅的解…

使用电路仿真软件教学的优势分析

随着科技的飞速发展&#xff0c;电子工程领域对人才的需求与日俱增。为了满足这一需求&#xff0c;教育者们不断探索着更加高效、直观的教学方法。电路仿真软件的出现&#xff0c;为电子工程教学注入了新的活力&#xff0c;它以其独特的优势&#xff0c;成为现代电子工程教育中…

C语言 函数的嵌套与递归 调用

本文 我们来说函数的嵌套调用和递归调用 在很多大型项目中 我们肯定不可能将所有逻辑都写在一个函数中 肯定要按功能拆解成多个特定的功能函数 函数并不允许嵌套调用&#xff0c;但是 允许在逻辑代码中嵌套调用 所谓函数嵌套调用 就是在一个函数中调用另一个函数&#xff0c;而…

多模态EDA论文小记

论文地址 该论文主要改进点是&#xff1a;通过动态化局部搜索中每个集群大小&#xff0c;高斯和柯西分布共同产生个体。总的来说改进点不多&#xff0c;当然也可能是笔者还没发现。 局部搜索 划分集群 划分集群有两个策略分别是&#xff1a; 随机生成一个点作为中心点&…

python:画饼图

我现在因工作需要在写一篇中文文章&#xff0c;领导要我用python处理数据和画图&#xff0c;那我也刚好学习一下python画图。 import matplotlib.pyplot as plt # 饼图数据 labels [A, B, C, D] sizes [15, 30, 45, 10] # 每个部分的大小 # 绘制饼图 plt.figure(figsize(6,…

STM32F1#1(入门了解)

一、STM32开发平台和工具 1.1 STM32芯片介绍 典型微控制器由CPU&#xff08;运算器、控制器&#xff09;、RAM、ROM和输入输出组成。 1.2 STM32核心板 STM32核心板配件&#xff1a; ①JTAG/SWD仿真-下载器 ②通信-下载模块 ③OLED显示屏 1&#xff09; 通信-下载模…

接收区块链的CCF会议--NDSS 2025 截止7.10 附录用率

会议名称&#xff1a;Network and Distributed System Security Symposium (NDSS) CCF等级&#xff1a;CCF A类学术会议 类别&#xff1a;网络与信息安全 录用率&#xff1a;2024年接收率19.5% Submissions are solicited in, but not limited to, the following areas: Ant…

密码口令初步

一&#xff0c;弱口令&#xff08;ctfhub&#xff09; 1.打开环境&#xff0c;发送到bp的instruder板块&#xff0c;一般id默认为admin&#xff0c;也可以用bp找出来&#xff0c;这里就是 2.先clear &#xff0c;再把password等号后面添加进来&#xff08;add&#xff09;&am…