蓝桥杯作业1版本2Word文件下载.docx
- 文档编号:18821788
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:24
- 大小:82.79KB
蓝桥杯作业1版本2Word文件下载.docx
《蓝桥杯作业1版本2Word文件下载.docx》由会员分享,可在线阅读,更多相关《蓝桥杯作业1版本2Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。
他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。
于是有人询问他的年龄,他回答说:
“我年龄的立方是个4位数。
我年龄的4次方是个6位数。
这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。
”
请你推算一下,他当时到底有多年轻。
答案写在这。
#include<
cmath>
;
boolf(intn,intm)
if(n>
=10000||n<
1000||m>
=1000000||m<
100000)
returnfalse;
intc[10]={0};
inti=0;
while(n)
c[n%10]=1;
n/=10;
i++;
while(m)
c[m%10]=1;
m/=10;
for(intj=0;
j<
10;
j++)
if(c[j]!
=1)returnfalse;
returntrue;
inta;
for(a=11;
=100;
if(f(pow(a,3),pow(a,4)))
pow(a,3)<
pow(a,4)<
3、题目描述
公交车票价为5角。
假设每位乘客只持有两种币值的货币:
5角、1元。
再假设持有5角的乘客有m人,持有1元的乘客有n人。
由于特殊情况,开始的时候,售票员没有零钱可找。
我们想知道这m+n名乘客以什么样的顺序购票则可以顺利完成购票过程。
显然,m<
n的时候,无论如何都不能完成,m>
=n的时候,有些情况也不行。
比如,第一个购票的乘客就持有1元。
下面的程序计算出这m+n名乘客所有可能顺利完成购票的不同情况的组合数目。
注意:
只关心5角和1元交替出现的次序的不同排列,持有同样币值的两名乘客交换位置并不算做一种新的情况来计数。
//m:
持有5角币的人数
//n:
持有1元币的人数
//返回:
所有顺利完成购票过程的购票次序的种类数
intf(intm,intn)
if(m<
n)return0;
if(n==0)return1;
returnf(m-1,n)+f(m,n-1);
55511
5551
5515
5155
1555
/////////////
5551111
5155111
5115511
小贴士:
1.浮点的非精确比较。
不能用==
a.小于一个临界值
b.转化为整数
2.有理数的高精度表示
注意:
舍入规则的细节
有效数字位数
3.有理数的整数分数表示法
4.IEEE754规则
特殊的有理数值
NaN
Infinite
-Infinite
0.0
-0.0
4、格子中输出
StringInGrid函数会在一个指定大小的格子中打印指定的字符串。
要求字符串在水平、垂直两个方向上都居中。
如果字符串太长,就截断。
如果不能恰好居中,可以稍稍偏左或者偏上一点。
下面的程序实现这个逻辑,请填写划线部分缺少的代码。
stdio.h>
string.h>
voidStringInGrid(intwidth,intheight,constchar*s)
inti,k;
charbuf[1000];
strcpy(buf,s);
if(strlen(s)>
width-2)buf[width-2]=0;
printf("
+"
);
for(i=0;
i<
width-2;
i++)printf("
-"
printf("
+\n"
for(k=1;
k<
(height-1)/2;
k++){
|"
for(i=0;
|\n"
%*s%s%*s"
(width-2-strlen(buf))/2,"
buf,(width-2-strlen(buf))/2,"
)
//填空
for(k=(height-1)/2+1;
height-1;
k++){
}
StringInGrid(20,6,"
abcd1234"
对于题目中数据,应该输出:
+------------------+
||
|abcd1234|
(如果出现对齐问题,参看【图1.jpg】)
只填写缺少的内容,不要书写任何题面已有代码或说明性文字。
5、阶乘位数
9的阶乘等于:
362880
它的二进制表示为:
1011000100110000000
这个数字共有19位。
请你计算,9999的阶乘的二进制表示一共有多少位?
需要提交的是一个整数,不要填写任何无关内容(比如说明解释等)
#definepi3.14159
intmain()//运用斯特林公式
intn,sum;
cin>
>
n;
if(n==1||n==2)
sum=n;
else
sum=(int)((n*log(n)-n+0.5*log(2*n*pi))/log
(2))+1;
cout<
sum<
6、题目描述
古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。
之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念!
罗马数字的表示主要依赖以下几个基本符号:
I1
V5
X10
L50
C100
D500
M1000
这里,我们只介绍一下1000以内的数字的表示法。
单个符号重复多少次,就表示多少倍。
最多重复3次。
比如:
CCC表示300XX表示20,但150并不用LLL表示,这个规则仅适用于IXCM。
如果相邻级别的大单位在右,小单位在左,表示大单位中扣除小单位。
IX表示9IV表示4XL表示40更多的示例参见下表,你找到规律了吗?
I,1
II,2
III,3
IV,4
V,5
VI,6
VII,7
VIII,8
IX,9
X,10
XI,11
XII,12
XIII,13
XIV,14
XV,15
XVI,16
XVII,17
XVIII,18
XIX,19
XX,20
XXI,21
XXII,22
XXIX,29
XXX,30
XXXIV,34
XXXV,35
XXXIX,39
XL,40
L,50
LI,51
LV,55
LX,60
LXV,65
LXXX,80
XC,90
XCIII,93
XCV,95
XCVIII,98
XCIX,99
C,100
CC,200
CCC,300
CD,400
D,500
DC,600
DCC,700
DCCC,800
CM,900
CMXCIX,999
本题目的要求是:
请编写程序,由用户输入若干个罗马数字串,程序输出对应的十进制表示。
输入格式是:
第一行是整数n,表示接下来有n个罗马数字(n<
100)。
以后每行一个罗马数字。
罗马数字大小不超过999。
要求程序输出n行,就是罗马数字对应的十进制数据。
例如,用户输入:
3
LXXX
XCIII
DCCII
则程序应该输出:
80
93
702
-----------------------
遇到Isum+=1
遇到Xsum+=10
遇到Vsum+=5
.if(包含"
IX"
)sum-=2;
if(包含"
IV"
XC"
)sum-=20;
...
string>
intRoman(chara)
switch(a)
case'
I'
:
return1;
break;
V'
return5;
X'
return10;
L'
return50;
C'
return100;
D'
return500;
M'
return1000;
voidreduce(int&
sum,chara,charb)
if(a=='
b=='
)sum-=2;
elseif(a=='
)sum-=20;
)sum-=200;
intf(chara[100])
intsum=0;
for(inti=0;
a[i]!
='
\0'
i++)
sum+=Roman(a[i]);
if(a[i+1]!
reduce(sum,a[i],a[i+1]);
returnsum;
intn;
intb[100];
chara[100];
a;
b[i]=f(a);
b[i]<
7、题目描述
A、B、C、D、E、F、G、H、I、J共10名学生有可能参加本次计算机竞赛,也可能不参加。
因为某种原因,他们是否参赛受到下列条件的约束:
1.如果A参加,B也参加;
2.如果C不参加,D也不参加;
3.A和C中只能有一个人参加;
4.B和D中有且仅有一个人参加;
5.D、E、F、G、H中至少有2人加;
6.C和G或者都参加,或者都不参加;
7.C、E、G、I中至多只能2人参加
8.如果E参加,那么F和G也都参加。
9.如果F参加,G、H就不能参加
10.如果I、J都不参加,H必须参加
请编程根据这些条件判断这10名同学中参赛者名单。
如果有多种可能,则输出所有的可能情况。
每种情况占一行。
参赛同学按字母升序排列,用空格分隔。
CDGJ
就是一种可能的情况。
多种情况的前后顺序不重要
技巧:
参加为1,不参加为0,不用boolean类型
3if(a+c<
=1)
4if(b+d==1)
for(intA=0;
A<
=1;
A++)
for(intB=0;
B<
B++)
if(A==1&
B==0)continue;
for(intC=0;
C<
C++)
if(A+C==2)continue;
for(intD=0;
D<
D++)
if(C==0&
D==1)continue;
if(B+D!
=1)continue;
for(intE=0;
E<
E++)
for(intF=0;
F<
F++)
for(intG=0;
G<
G++)
if(C+G==1)continue;
for(intH=0;
H<
H++)
if(D+E+F+G+H<
2)continue;
if(F==1&
G+H!
=0)continue;
for(intI=0;
I<
I++)
if(C+E+G+I>
if(E==1&
F+G!
=2)continue;
for(intJ=0;
J<
J++)
if(I+J+H==0)continue;
if(A)cout<
'
A'
if(B)cout<
B'
if(C)cout<
if(D)cout<
if(E)cout<
E'
if(F)cout<
F'
if(G)cout<
G'
if(H)cout<
H'
if(I)cout<
if(J)cout<
J'
8、啤酒和饮料
啤酒每罐2.3元,饮料每罐1.9元。
小明买了若干啤酒和饮料,一共花了82.3元。
我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。
答案是一个整数。
请通过浏览器提交答案。
不要书写任何多余的内容(例如:
写了饮料的数量,添加说明文字等)。
inta=23,b=19,n=823;
for(inti=1;
n/a;
for(intj=i;
n/b;
if(i*23+j*19==823)cout<
啤酒:
饮料:
9、题目描述
匪警请拨110,即使手机欠费也可拨通!
为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!
某批警察叔叔正在进行智力训练:
123456789=110;
请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。
之间没有填入符号的数字组合成一个数,例如:
12+34+56+7-8+9就是一种合格的填法;
123+4+5+67-89是另一个可能的答案。
请你利用计算机的优势,帮助警察叔叔快速找到所有答案。
每个答案占一行。
形如:
12+34+56+7-8+9
123+4+5+67-89
......
已知的两个答案可以输出,但不计分。
各个答案的前后顺序不重要。
请仔细调试!
您的程序只有能运行出正确结果的时候才有机会得分!
请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
请不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。
不能使用1.6或更高版本。
voidprint(inta[10])
intb[10];
b[i]=i;
=9;
i;
if(a[i]==1)cout<
elseif(a[i]==2)cout<
=110"
voidf(inta[10],intn)
if(n==9)
intsum=0,x=0,k=9;
for(inti=9;
i>
=0;
i--)
if(a[i]==1||i==0)
for(intj=i+1;
=k;
x=x*10+j;
sum+=x;
x=0;
k=i;
elseif(a[i]==2)
sum-=x;
if(sum==110)print(a);
=3;
a[n]=i;
f(a,n+1);
a[n]=3;
inta[10]={0};
//9个符号位
a[9]=3;
//9后的默认为空1+2-3空
f(a,1);
10、消除尾一
下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0
如果最后一位是0,则原数字保持不变。
如果采用代码中的测试数据,应该输出:
0000000000000000000000000110011100000000000000000000000001100000
0000000000000000000000000000110000000000000000000000000000001100
请仔细阅读程序,填写划线部分缺少的代码。
voidf(intx)
inti;
i<
32;
i++)printf("
%d"
(x>
(31-i))&
1);
x=(x+1)&
x;
\n"
f(103);
f(12);
11、一步之遥
从昏迷中醒来,小明发现自己被关在X星球的废矿车里。
矿车停在平直的废弃的轨道上。
他的面前是两个按钮,分别写着“F”和“B”。
小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。
按F,会前进97米。
按B会后退127米。
透过昏暗的灯光,小明看到自己前方1米远正好有个监控探头。
他必须设法使得矿车正好停在摄像头的下方,才有机会争取同伴的援助。
或许,通过多次操作F和B可以办到。
矿车上的动力已经不太足,黄色的警示灯在默默闪烁...
每次进行F或B操作都会消耗一定的能量。
小明飞快地计算,至少要多少次操作,才能把矿车准确地停在前方1米远的地方。
请填写为了达成目标,最少需要操作的次数。
注意,需要提交的是一个整数,不要填写任何无关内容(比如:
解释说明等)
intn=1000;
1000;
for(intj=1;
if(i*97+1==127*j)
if(i+j<
n)n=i+j;
12、题目描述
有N个人参加100米短跑比赛。
跑道为8条。
程序的任务是按照尽量使每组的人数相差最少的原则分组。
例如:
N=8时,分成1组即可。
N=9时,分成2组:
一组5人,一组4人。
N=25时,分4组:
7、6、6、6。
请编程计算分组数字。
要求从键盘输入一个正整数(1~100之间,不必考虑输入错误的情况),表示参赛的人数。
程序输出每个组的人数。
从大到小顺序输出,每个数字一行。
比如,用户输入:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蓝桥杯 作业 版本