没有合适的资源?快使用搜索试试~ 我知道了~
首页2019常州市程序设计小能手比赛试题.pdf
资源详情
资源评论
资源推荐
2019 年常州市“程序设计小能手”比赛说明
在 D 盘根目录下建一个以自己的中文名字命名的文件夹如“丁宁”,活动结
束前将你编的所有程序(扩展名为 cpp)放到该文件夹中,然后右击该文件夹
在弹出菜单中选择“添加到丁宁.rar”,压缩后等待工作人员上传到教师机。
一般说来前面的题要比后面的容易,后面的题目虽然得到满分很难,然而拿
一部分分数并不难。请合理分配你的时间,先保证程序的正确性,超时等问
题都是次要的,计算机的运行速度往往比你想象的要快得多。如果某题不太
会做你可以针对小数据编程争取拿部分分数,哪怕手算一个结果输出也行,
比赛总是有难度的,不能像平时学校里的小测验那样老想着拿满分,从往年
的经验来看你能得到总分的 1/4 就相当不错了。
所有测试点时限都是 1 秒,所有程序运行时内存都不能超过 256MB,大约可
以存储六千万个 int 类型的整数。每题一般有 10 个或 20 个测试点,除非特
别说明,每题的满分均为 100 分。
输出时行首和行尾都不要有多余的空格,也不要有多余的空行,相邻两项输
出之间严格用一个空格隔开,一行输出结束时一定要换行。
程序名在题目后面的括号中,千万不能起错名字。所有题目均使用标准输入
输出,即从键盘输入数据,结果输出到屏幕,请认真阅读范例,你的程序请
严格按范例程序的格式编写。
题目中用到的“∧”符号表示乘方运算,如 2^3=2×2×2=8,10^6=1000000
【范例】
最大公约数和最小公倍数(gcdlcm.cpp)
问题描述
最大公约数(Greatest Common Divisor,简写为 GCD):如果有一个自然数 a 能被自然
数 b 整除(也称 b 能整除 a,记作 b|a),则称 a 为 b 的倍数,b 为 a 的约数。两个自然数公
共的约数,叫做这两个自然数的公约数。所有公约数中最大的一个,称为这两个自然数的最
大公约数。最小公倍数(Least Common Multiple,缩写 LCM):对于两个自然数来说,最
小公倍数是指这两个数公共的倍数中最小的一个。例如: 在 12 和 16 中,4 就是 12 和 16
的最大公约数。12 和 16 的最小公倍数是 48。
早在公元前 300 年左右,欧几里德就在他的著作《几何原本》中给出了求最小公倍数
的高效方法——辗转相除法。辗转相除法使用到的原理很聪明也很简单,假设用 GCD(x, y)
表示两个自然数 x 与 y 的最大公约数,取 k = x / y,b = x % y,则 x = k * y + b,如果一个
自然数能够同时整除 x 和 y,则必能同时整除 b 和 y;而能够同时整除 b 和 y 的自然数也必
能同时整除 x 和 y,即 x 和 y 的公约数与 b 和 y 的公约数是相同的,其最大公约数当然也
相同,则当 y != 0 时有 GCD(x, y)= GCD(y, x % y),如此便可把原问题转化为求两个更小的
自然数的最大公约数,直到其中一个数为 0,剩下的另外一个数就是两者的最大公约数。以
求 288 和 123 的最大公约数为例,操作如下: 288 % 123=42 123 % 42=39 42 %
39=3 39 % 3=0 所以 3 就是 288 和 123 的最大公约数。
计算最小公倍数时,通常会借助最大公约数来辅助计算。可以证明两个自然数的乘积等
于它们的最大公约数和最小公倍数的乘积,即 a×b=GCD(a,b)×LCM(a,b)。如 12×16=192=
GCD(12,16) ×LCM(12,16)=4×48。
编一个程序对于输入的两个自然数 a 和 b,求它们的最大公约数和最小公倍数。
输入格式
输入数据仅有一行包含两个用空格隔开的自然数 a 和 b,范围不超过 long long。
输出格式
输出数据仅有一行包含两个自然数,表示要求的最大公约数和最小公倍数。两数之间严
格用一个空格隔开,行末没有多余的空格。
样例输入
12 16
样例输出
4 48
以下是 C++源程序,存盘文件名为 gcdlcm.cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
long long m,n,a,b,r;
cin>>m>>n;
a = m;
b = n;
while ( b != 0 ){
r = a % b;
a = b;
b = r;
}
cout<<a<<" "<<m*n/a<<endl;
return 0;
}
第一题满分为 50 分,第二题满分为 80 分,第三题满分为 100 分,第四题
满分为 120 分,第五、六、七题每题满分为 150 分,第八题满分为 200 分。
注意敏感词不能在程序中使用,如 y1,y2,y3,left,right,mid,link,next 等!
猜先(a.cpp)
问题描述
小 X 凭借出色的棋艺被聘请为少年宫的中国象棋老师。少年宫改造以后所有的设施都焕
然一新,象棋教室已不再使用传统的木制棋子和棋盘了,小朋友们所有的操作都是在电脑上
进行的,如猜先、对弈、复盘、计算积分等,这给老师的备课带来了极大的挑战,因为除了
正常的棋艺教学,还要开发各种应用程序来辅助教学。众所周知任何棋类运动开局前都要猜
先,如围棋项目猜先仪式是由上手抓起一把围棋子让对手猜单双,猜中先行。而象棋则是甲、
乙两人同时从各自的棋盒中摸出一枚棋子比大小,连续比三次,获胜次数多的一方执红先行,
另一方则执黑后行。因现在所有的操作都要在电脑上实现,小 X 需要编写一个象棋猜先程序,
具体任务如下:象棋中有七种棋子,分别是帅、士、相、车、马、炮、兵,程序中用 7,6,5,4,3,2,1
表示,定义大小的规则为:帅>士>相>车>马>炮,兵最弱,除了帅之外的棋子都比兵大,
士>相>车>马>炮>兵,但兵却能吃帅,即兵>帅。猜先程序要能实现以下功能:输入三
行数据,每行两个棋子的编号,判断谁胜谁负。小 X 觉得这个程序太简单了,于是交给了参
加本次比赛的你来完成。
输入格式
输入数据共有三行,每行两个用空格隔开的正整数,表示两个棋子对应的编号,第一个
数对应甲摸出的棋子的编号,第二个数对应乙摸出的棋子的编号。
输出格式
输出一行包含一个单词,如甲获胜的次数比乙多则输出“Win”,如乙获胜的次数多则
输出“Lose”,如甲乙两人获胜次数相同则输出“Tie”。请注意大小写,引号不用输出!
样例输入
6 2
3 3
7 1
样例输出
Tie
样例解释
第一次甲摸出的棋子是士,编号为 6,乙摸出的棋子是炮,编号为 2,甲胜;第二次甲
乙摸出的棋子都是马,编号为 3,平;第三次甲摸出的棋子是帅,编号为 7,乙摸出的棋子
是兵,编号为 1,乙胜;三次比下来结果为平手。
数据范围
对于 30%的数据不会出现 7
对于 100%的数据,每种结果对应的数据均不少于 1/3
投篮(b.cpp)
问题描述
剩余14页未读,继续阅读
chenxiaohua
- 粉丝: 81
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0