没有合适的资源?快使用搜索试试~ 我知道了~
2021常州市程序设计小能手比赛试题
需积分: 5 6 下载量 75 浏览量
2023-05-06
15:39:52
上传
评论
收藏 538KB PDF 举报
温馨提示
试读
13页
2021常州市程序设计小能手比赛试题
资源推荐
资源详情
资源评论
2021 年常州市“程序设计小能手”比赛说明
在 D 盘根目录下建一个以自己的中文名字命名的文件夹如“丁宁”,活动结束
前将你编的所有程序(扩展名为 cpp)放到该文件夹中,然后右击该文件夹在
弹出菜单中选择“添加到丁宁.rar”,压缩后等待工作人员上传到教师机。
一般说来前面的题要比后面的容易,后面的题目虽然得到满分很难,然而拿
一部分分数并不难。请合理分配你的时间,先保证程序的正确性,超时等问
题都是次要的,计算机的运行速度往往比你想象的要快得多。如果某题不太
会做你可以针对小数据编程争取拿部分分数,哪怕手算一个结果输出也行,
比赛总是有难度的,不能像平时学校里的小测验那样老想着拿满分,从往年
的经验来看你能得到总分的 1/4 就相当不错了。
所有测试点时限都是 1 秒,所有程序运行时内存都不能超过 256MB,大约可
以存储六千万个 int 类型的整数。
输出时行首和行尾都不要有多余的空格,也不要有多余的空行,相邻两项输
出之间严格用一个空格隔开,一行输出结束时一定要换行。
程序名在题目后面的括号中,千万不能起错名字。所有题目均使用标准输入
输出,即从键盘输入数据,结果输出到屏幕,请认真阅读范例,你的程序请
严格按范例程序的格式编写。
编译不打开任何优化开关,包括但不限于 c++11 和 O2。
题目中用到的“∧”符号表示乘方运算,如 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,范围不超过 int。
输出格式
输出数据仅有一行包含两个自然数,表示要求的最大公约数和最小公倍数。两数之间严
格用一个空格隔开,行末没有多余的空格。
样例输入
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;
}
注意敏感词不能在程序中使用,如 y1,y2,y3,left,right,mid,link,next 等!
书页(book.cpp)
本题总分:50 分
问题描述
小 X 把一本书摊开在桌上。这本书的页码是连续的,从 1 到 n。
现在他告诉你现在桌面上书本左右两页的页码是什么,请你回答他当他翻到第 A 页时,
第 A 页会在左边还是右边。
输入格式
第一行 1 个正整数 n,表示这本书的页码从 1 标号到 n。
第二行 2 个正整数,表示现在书本左右两页的页码 P1 和 P2。
第三行 1 个正整数,表示小 X 想问你第 A 页在左边还是右边。
输出格式
如果第 A 页在左边,输出”L”;如果第 A 页在右边,输出”R”。(均不包含引号)
样例输入 1
5
2 3
1
样例输出 1
R
样例输入 2
5
2 3
4
样例输出 2
L
样例 1、2 解释
一开始书本状态为第 2 张图。可以看到,第 1 页在右,第 4 页在左。
2
3
1
2
3
4
5
翻页
翻页
剩余12页未读,继续阅读
资源评论
seamoth
- 粉丝: 3
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功