ACM软件大赛之编程大赛题目附部分答案Word下载.docx

上传人:b****1 文档编号:14600229 上传时间:2022-10-23 格式:DOCX 页数:19 大小:22.42KB
下载 相关 举报
ACM软件大赛之编程大赛题目附部分答案Word下载.docx_第1页
第1页 / 共19页
ACM软件大赛之编程大赛题目附部分答案Word下载.docx_第2页
第2页 / 共19页
ACM软件大赛之编程大赛题目附部分答案Word下载.docx_第3页
第3页 / 共19页
ACM软件大赛之编程大赛题目附部分答案Word下载.docx_第4页
第4页 / 共19页
ACM软件大赛之编程大赛题目附部分答案Word下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

ACM软件大赛之编程大赛题目附部分答案Word下载.docx

《ACM软件大赛之编程大赛题目附部分答案Word下载.docx》由会员分享,可在线阅读,更多相关《ACM软件大赛之编程大赛题目附部分答案Word下载.docx(19页珍藏版)》请在冰豆网上搜索。

ACM软件大赛之编程大赛题目附部分答案Word下载.docx

#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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1