蓝桥杯cc省赛试题及答案解析Word文档格式.docx

上传人:b****3 文档编号:17043764 上传时间:2022-11-28 格式:DOCX 页数:14 大小:45.12KB
下载 相关 举报
蓝桥杯cc省赛试题及答案解析Word文档格式.docx_第1页
第1页 / 共14页
蓝桥杯cc省赛试题及答案解析Word文档格式.docx_第2页
第2页 / 共14页
蓝桥杯cc省赛试题及答案解析Word文档格式.docx_第3页
第3页 / 共14页
蓝桥杯cc省赛试题及答案解析Word文档格式.docx_第4页
第4页 / 共14页
蓝桥杯cc省赛试题及答案解析Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

蓝桥杯cc省赛试题及答案解析Word文档格式.docx

《蓝桥杯cc省赛试题及答案解析Word文档格式.docx》由会员分享,可在线阅读,更多相关《蓝桥杯cc省赛试题及答案解析Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

蓝桥杯cc省赛试题及答案解析Word文档格式.docx

,ans);

return0;

}

 

第二题

生日蜡烛

某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。

现在算起来,他一共吹熄了236根蜡烛。

请问,他从多少岁开始过生日party的?

请填写他开始过生日party的年龄数。

26

intstart,end;

for(start=1;

start<

236;

start++)

{

for(end=start;

end<

end++)

intsum=0;

for(inti=start;

=end;

sum+=i;

if(sum==236)

start:

%dend:

%d\n"

start,end);

}

第三题

凑算式

BDEF

A+---+-------=10

CGHI

(如果显示有问题,可以参见【图】)

这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

比如:

6+8/3+952/714就是一种解法,

5+3/1+972/486是另一种解法。

这个算式一共有多少种解法?

你提交应该是个整数,不要填写任何多余的内容或说明性文字。

29

intans=0;

intnum[10];

boolvisit[10];

voidSolve()

doublesum=num[0]+(double)num[1]/num[2]+(double)(num[3]*100+num[4]*10+num[5])/(num[6]*100+num[7]*10+num[8]);

if(sum==10)

ans++;

voiddfs(intindex)

if(index==9)

Solve();

return;

10;

if(!

visit[i])

visit[i]=true;

num[index]=i;

dfs(index+1);

visit[i]=false;

dfs(0);

}

第四题

快速排序

排序在各种场合经常被用到。

快速排序是十分常用的高效率的算法。

其思想是:

先选一个“标尺”,

用它把整个队列过一遍筛子,

以保证:

其左边的元素都不大于它,其右边的元素都不小于它。

这样,排序问题就被分割为两个子区间。

再分别对子区间排序就可以了。

下面的代码是一种实现,请分析并填写划线部分缺少的代码。

#include<

voidswap(inta[],inti,intj)

{

intt=a[i];

a[i]=a[j];

a[j]=t;

intpartition(inta[],intp,intr)

inti=p;

intj=r+1;

intx=a[p];

while

(1){

while(i<

r&

&

a[++i]<

x);

while(a[--j]>

if(i>

=j)break;

swap(a,i,j);

}

______________________;

returnj;

voidquicksort(inta[],intp,intr)

if(p<

r){

intq=partition(a,p,r);

quicksort(a,p,q-1);

quicksort(a,q+1,r);

intmain()

inti;

inta[]={5,13,6,24,2,8,19,27,6,12,1,17};

intN=12;

quicksort(a,0,N-1);

for(i=0;

i<

N;

i++)printf("

%d"

a[i]);

\n"

);

只填写缺少的内容,不要书写任何题面已有代码或说明性文字。

swap(a,p,j)

第五题

抽签

X星球要派出一个5人组成的观察团前往W星。

其中:

A国最多可以派出4人。

B国最多可以派出2人。

C国最多可以派出2人。

那么最终派往W星的观察团会有多少种国别的不同组合呢?

下面的程序解决了这个问题。

数组a[]中既是每个国家可以派出的最多的名额。

程序执行结果为:

DEFFF

CEFFF

CDFFF

CDEFF

CCFFF

CCEFF

CCDFF

CCDEF

BEFFF

BDFFF

BDEFF

BCFFF

BCEFF

BCDFF

BCDEF

(以下省略,总共101行)

#defineN6

#defineM5

#defineBUF1024

voidf(inta[],intk,intm,charb[])

inti,j;

if(k==N){

b[M]=0;

if(m==0)printf("

%s\n"

b);

return;

=a[k];

i++){

for(j=0;

j<

i;

j++)b[M-m+j]=k+'

A'

;

______________________;

.”的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意:

main函数需要返回0

只使用ANSIC/ANSIC++标准,不要调用依赖于编译环境或操作系统的特殊函数。

所有依赖的函数必须明确地在源文件中#include<

xxx>

,不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

方法一:

intn;

intflag=false;

scanf("

%d"

&

n);

for(inti=0;

i*i<

=n;

for(intj=0;

j*j<

j++){

for(intk=0;

k*k<

k++)

inttemp=n-i*i-j*j-k*k;

doublel=sqrt((double)temp);

if(l==(int)l)

%d%d%d%d\n"

i,j,k,(int)l);

flag=true;

break;

if(flag)break;

方法二:

intmpt[5000010]={0};

.”的多余内容。

第十题

最大比例

X星球的某个大奖赛设了M级奖励。

每个级别的奖金是一个正整数。

并且,相邻的两个级别间的比例是个固定值。

也就是说:

所有级别的奖金数构成了一个等比数列。

16,24,36,54

其等比值为:

3/2

现在,我们随机调查了一些获奖者的奖金数。

请你据此推算可能的最大的等比值。

输入格式:

第一行为数字N(0<

N<

100),表示接下的一行包含N个正整数

第二行N个正整数Xi(Xi<

1000000000000),用空格分开。

每个整数表示调查到的某人的奖金数额

要求输出:

一个形如A/B的分数,要求A、B互质。

表示可能的最大比例系数

测试数据保证了输入格式正确,并且最大比例是存在的。

例如,输入:

3

125020032

程序应该输出:

25/4

再例如,输入:

4

31253232200

5/2

38885242882

4/1

资源约定:

峰值内存消耗<

256M

CPU消耗<

3000ms

请严格按要求输出,不要画蛇添足地打印类似:

“请您输入...”的多余内容。

algorithm>

queue>

usingnamespacestd;

#defineLLlonglong

structfs

LLup,down;

};

intn;

LLarr[110];

fsFs[110];

boolcmp(LLa,LLb)

returna>

b;

LLGcd(LLa,LLb)

if(b==0)returna;

returnGcd(b,a%b);

LLGet(LLa,LLb)

if(a<

b)a^=b^=a^=b;

LLv[30];

queue<

LL>

team;

if(a==b||a/b==a)returnb;

v[0]=a,v[1]=b;

v[2]=a/b;

inttop=3,i,j;

(a/b);

while())

LLnow=();

();

for(i=0;

top;

LLtemp=(v[i]>

now)?

v[i]/now:

now/v[i];

boolfind=false;

for(j=0;

if(v[j]==temp)find=true;

if(find==true)continue;

(temp);

v[top++]=temp;

LLans=v[0];

if(v[i]!

=1)

ans=v[i];

if(v[i]<

ans&

v[i]!

=1)ans=v[i];

returnans;

n;

i++)scanf("

%lld"

arr[i]);

sort(arr,arr+n,cmp);

inttop=1;

for(i=1;

if(arr[i]!

=arr[i-1])arr[top++]=arr[i];

n=top;

n-1;

LLgcd=Gcd(arr[i],arr[i+1]);

Fs[i].up=arr[i]/gcd;

Fs[i].down=arr[i+1]/gcd;

LLx=Fs[0].up;

n-1;

x=Get(x,Fs[i].up);

LLy=Fs[0].down;

y=Get(y,Fs[i].down);

%lld/%lld\n"

x,y);

}

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

当前位置:首页 > 小学教育 > 语文

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

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