ACM程序设计大赛基础试题及详细答案_第1页
ACM程序设计大赛基础试题及详细答案_第2页
ACM程序设计大赛基础试题及详细答案_第3页
ACM程序设计大赛基础试题及详细答案_第4页
ACM程序设计大赛基础试题及详细答案_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ACM程序设计大赛基础试题及详细答案本次试题为ACM入门级竞赛真题,共4道编程题,难度循序渐进,涵盖基础运算、模拟、字符串处理、贪心算法,适配校赛、新生选拔赛场景。所有题目均包含完整题目描述、输入输出要求、样例数据、详细解题思路、AC代码及代码解析。编程环境说明:支持C/C++,标准输入输出,无特殊依赖,代码可直接编译运行。题目一:整数求和(基础题,100分)题目描述给定两个整数a和b,请计算两个整数的和并输出结果。本题主要考察选手的基础输入输出能力与整数运算能力,是程序设计的入门基础题型。输入格式一行输入两个整数a、b,数字中间用空格隔开。输出格式输出一个整数,为a与b的和,末尾换行。数据范围-10000≤a,b≤10000样例输入1235样例输出47解题思路本题为最简单的入门题型,核心逻辑仅有三步:第一,定义两个整型变量存储输入数据;第二,通过标准输入读取两个整数;第三,计算两数之和并通过标准输出打印结果。无需考虑复杂判断,整数范围在int类型承载范围内,不会出现溢出问题。AC代码(C++)cpp

#include<iostream>

usingnamespacestd;

intmain()

{

inta,b;

cin>>a>>b;

cout<<a+b<<endl;

return0;

}代码解析1.引入输入输出头文件iostream,实现标准读写功能;2.使用std命名空间,简化输入输出代码书写;3.定义int类型变量a、b,适配题目数据范围;4.cin读取两个输入整数,自动忽略空格、换行等间隔符;5.直接计算a+b并输出结果,endl实现换行,符合输出格式要求。题目二:奇偶判断(模拟题,100分)题目描述输入一个正整数n,判断该数字是奇数还是偶数。如果是偶数,输出Even;如果是奇数,输出Odd。输入格式一行输入一个正整数n。输出格式根据数字奇偶性,单独一行输出Even或Odd。数据范围1≤n≤100000样例输入18样例输出1Even样例输入299样例输出2Odd解题思路奇偶判断的核心数学规则:能被2整除的整数为偶数,不能被2整除的为奇数。程序中可通过取模运算实现判断,若n%2==0则为偶数,否则为奇数。本题考察条件判断语句的使用,是程序逻辑分支的基础题型。AC代码(C++)cpp

#include<iostream>

usingnamespacestd;

intmain()

{

intn;

cin>>n;

if(n%2==0)

{

cout<<"Even"<<endl;

}

else

{

cout<<"Odd"<<endl;

}

return0;

}代码解析1.定义整型变量n存储输入数字;2.读取输入数据后,通过if-else分支语句判断奇偶性;3.取模运算n%2获取余数,余数为0判定为偶数,输出Even;4.余数不为0则判定为奇数,输出Odd;5.严格匹配题目输出格式,无多余字符输出。题目三:字符串反转(字符串专题,150分)题目描述输入一串仅包含大小写字母和数字的字符串,请将字符串整体反转后输出。例如输入abc123,反转后输出321cba。输入格式一行输入一个无空格的字符串。输出格式输出反转后的完整字符串,末尾换行。数据范围字符串长度1≤len≤1000样例输入ACM2026样例输出6202MCA解题思路字符串反转有两种常用解法,第一种是调用C++内置反转函数,代码简洁高效;第二种是手动遍历字符串,从最后一个字符到第一个字符依次输出,适合新手理解底层逻辑。本题考察字符串的基本操作、遍历方式,是字符串专题的经典基础题。AC代码(C++手写遍历版)cpp

#include<iostream>

#include<string>

usingnamespacestd;

intmain()

{

strings;

cin>>s;

//从字符串末尾向前遍历

for(inti=s.size()-1;i>=0;i--)

{

cout<<s[i];

}

cout<<endl;

return0;

}代码解析1.引入string头文件,支持字符串类型操作;2.定义字符串变量s存储输入内容;3.s.size()获取字符串总长度,字符串下标从0开始,因此最后一位下标为长度减一;4.循环从末尾下标遍历至0,依次打印每个字符,实现字符串反转;5.遍历结束后换行,满足输出格式要求。题目四:最大差值(贪心算法,150分)题目描述给定n个整数,找出其中最大值与最小值的差值。保证所有数据合法,无需做异常判断。输入格式第一行输入一个整数n,表示数字个数;第二行输入n个整数,中间用空格分隔。输出格式输出一个整数,为最大值减最小值的结果。数据范围2≤n≤1000,-10000≤每个数字≤10000样例输入512599-327样例输出102样例解释最大值为99,最小值为-3,差值为99-(-3)=102。解题思路本题核心为贪心思想,一次遍历数组即可同步记录最大值和最小值,时间复杂度为O(n),效率最优。首先初始化最大值为极小值、最小值为极大值,随后逐个读取数字,不断更新最大、最小值,遍历完成后计算差值输出即可。相比排序后取值,遍历法效率更高,适合竞赛解题。AC代码(C++)cpp

#include<iostream>

#include<climits>

usingnamespacestd;

intmain()

{

intn;

cin>>n;

intmax_num=INT_MIN;

intmin_num=INT_MAX;

intx;

for(inti=0;i<n;i++)

{

cin>>x;

if(x>max_num)max_num=x;

if(x<min_num)min_num=x;

}

cout<<max_num-min_num<<endl;

return0;

}代码解析1.引入climits头文件,调用INT_MIN(int最小值)、INT_MAX(int最大值),完成极值初始化;2.读取数字个数n,通过循环逐个读取数组元素;3.每次读

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论