ACM软件大赛之编程大赛题目附部分答案Word下载.docx
- 文档编号:14600229
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:19
- 大小:22.42KB
ACM软件大赛之编程大赛题目附部分答案Word下载.docx
《ACM软件大赛之编程大赛题目附部分答案Word下载.docx》由会员分享,可在线阅读,更多相关《ACM软件大赛之编程大赛题目附部分答案Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
#include<
iostream>
intf(intx){
inta=1,b=0;
intmax_=x;
intsum=0;
for(inti=0;
i<
max_;
i++){
sum=a+b;
a=b;
b=sum;
}
returnsum;
}
voidloop_print(intnum,charchr){
num;
i++)
std:
:
cout<
<
chr;
std:
"
\n"
;
intmain(){
intline_max=7;
charchr='
A'
for(intline=0;
line<
line_max;
line++){
loop_print(f(line+1),chr);
chr++;
}
return0;
题目二:
有个电子钟,12点显示为12:
00〔即12小时制〕,那么请问一天24时间,出现连续3个一样数字的钟点有几个?
usingnamespacestd;
boolcheck(inttime){
inth=time/100;
intm=time-100*h;
returnh<
=12&
&
m<
=59&
h>
0?
true:
false;
//12小时制
inttime=0;
intj(0);
//总计数器
while(time<
1270){//max12:
59
intt=time;
intn[4];
for(inti=0;
i<
4;
i++){
n[i]=t%10;
t/=10;
if(n[1]==n[2]&
(n[0]==n[1]||n[3]==n[1])&
check(time)){
//cout<
n[3]<
n[2]<
n[1]<
n[0]<
//test
j++;
time++;
cout<
total:
"
j*2
<
endl;
题目三:
10进制的四位数中有几个符合如下特征:
将其分别表示为16进制、10进制、12进制,在每种状态下,分别将各个位上的数相加,能得到3个相等10进制数。
例如2992
10进制:
29922+9+9+2=22
12进制:
18941+8+9+4=22
16进制:
BB011+11+0=22
2992-2999
cmath>
intconvert(intn,intc){
floathigh_p=0;
intsum=0;
inta[4]={0,0,0,0};
for(inti=0;
floattestN=pow(c,(float)i);
if(n>
=testN)high_p=i;
elsebreak;
high_p!
=-1;
a[i]=n/pow(c,high_p);
n-=a[i]*pow(c,high_p);
high_p--;
i++){sum+=a[i];
intj=0;
for(inti=1000;
=9999;
if((convert(i,16)==convert(i,10))&
(convert(i,10)==convert(i,12))){
cout<
j;
return0;
第二阶段题目:
不引入临时变量写出swap(a,b)功能
voidswap(int&
a,int&
b){
a+=b;
b=a-b;
a-=b;
she分别代表3个数字,:
(he)^2=she
she=?
for(inthe=15;
he<
=96;
he++)
for(ints=1;
s<
=9;
s++)
if(he*he==100*s+he)
std:
he*he<
有4条狗A、B、C、D,他们分别在一条100m的公路上步行,速率均为5m/s,A初始在30m处,B初始在65m处,C初始在75m处,D初始在95m处,初始左右方向是随意的,任意两狗相遇那么各自掉头〔掉头时间不计,速率保持5m/s〕。
请问,4条狗最终都离开公路的最大时间是几秒?
95/5;
题目四:
BigBang中的高级石头剪刀布问题
Scissors-Paper
Paper-Rock
Rock-Scissors
Rock-Lizard
Lizard-Spock
Spock-Scissors
Scissors-Lizard
Lizard-Paper
Paper-Spock
Spock-Rock
规那么是左边的手势赢右边的手势,现有玩家P1、P2,输入各自选择的手势,得出胜负。
intmain()
{
intp2,p1;
cout
<
1.Paper"
endl
2.Rock"
3.Lizard"
4.Spock"
5.Scissors"
endl;
cin>
>
p1>
p2;
floatn=p1-p2;
if(n*pow(-1,fabs(n))<
0)//此算法由yaozizi提供
cout<
p2win"
elseif(n==0)
duce"
else
p1win"
题目五:
游戏规那么:
21根火柴,每次取1-4根,谁取走最后一根判输。
现在人和计算机博弈,设计一个程序保证计算机必胜,要求每回合人与计算机各输入〔或返回〕一个代表取走火柴根数的数,直到游戏完毕。
intn=21;
intp,c;
while(n!
=0){
cin>
p;
while(p>
4||p<
=0||n-p<
0){
err,inputagain"
cin>
if(n!
=0){
if(n!
=1)cout<
5-p<
else{
cout<
PCwins"
break;
}
if(n>
=5)n-=5;
题目六:
〔10分〕
以下式子:
2+3+4=9
1+2+3+4=10
显然右边的数都能表示为n〔n>
2〕个连续自然数之和〔1开场〕,暂称之为囧数
但似乎23、32等数都不能写成几个数之和的形式,所以它们不是囧数
这里有个可行的判断方法为:
上限为N,那么测试
1+2+3
1+2+3+4
……
1+2+3+4……+N
2+3+4
2+3+4+……+N
(N-2)+(N-1)+N
是否等于N
这是一种可行但非常暴力的穷举
实际上囧数还是有一些规律可循的,请设计一个优于之前提到的算法
要求输入一个数,并判断它是否为囧数
/*
1.如果一个数能被奇数〔>
=3〕整除,那么必能写成X=平均数*中间数的形式,所以是囧数
2.如果一个数是合数,如果其中有奇数因子,那么回到1,为囧数;
如果它是2的乘方,那么不是囧数
证明:
它无法写成奇数个相加,因为除不尽奇数;
也不能写成偶数个相加,中间数有两个,和必为奇数,这个奇数必然是欲判断数的一个因子
3.如果一个数是素数,那么必须是6、10、14、18……个数相加得来,这样才能得到奇数,根据高斯求和公式,这样的和必有奇数因子
综上:
只有2的乘方、素数、小于6的自然数,不是囧数
*/
boolcheck(longtar){
boolflag=false;
if(tar<
6)flag=false;
else{
if(tar%2==0){//偶数是否是2的阶乘
while(tar%2==0)tar/=2;
tar==1?
flag=false:
flag=true;
else{//奇数是否是素数
doubleend=tar;
for(inti=3;
=sqrt(end);
i+=2){
if(tar%i==0){flag=true;
break;
elsecontinue;
returnflag;
inttar;
cin>
tar;
boolflag=check(tar);
flag;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ACM 软件 大赛 编程 题目 部分 答案