蓝桥杯ACM决赛经典试题及其详解Word文档下载推荐.docx
- 文档编号:1408163
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:54
- 大小:25.88KB
蓝桥杯ACM决赛经典试题及其详解Word文档下载推荐.docx
《蓝桥杯ACM决赛经典试题及其详解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《蓝桥杯ACM决赛经典试题及其详解Word文档下载推荐.docx(54页珍藏版)》请在冰点文库上搜索。
stdio.h>
intmain()
{
intA,B;
scanf("
%d%d"
&
A,&
B);
printf("
%d"
A+B);
return0;
}
//参考代码Java
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
classMain
publicstaticvoidmain(String[]args)throwsIOException
{
args=newBufferedReader(newInputStreamReader(System.in)).readLine().split("
"
);
System.out.println(Integer.parseInt(args[0])+Integer.parseInt(args[1]));
}
【2】
入门训练Fibonacci数列
Fibonacci数列的递推公式为:
Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入包含一个整数n。
输出一行,包含一个整数,表示Fn除以10007的余数。
在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
10
55
22
7704
1<
=n<
=1,000,000。
main()
unsignedlongs=0,f1=1,f2=1,f3=1,n=0;
&
n);
if(n>
2)
for(s=3;
s<
=n;
s++)
f3=(f2+f1)%10007;
f1=f2;
f2=f3;
f3);
//参考代码C语言
stdlib.h>
#defineMOD10007
#defineMAXN1000001
intn,i,F[MAXN];
F[1]=1;
F[2]=1;
for(i=3;
i<
=n;
++i)
F[i]=(F[i-1]+F[i-2])%MOD;
%d\n"
F[n]);
//参考代码Java语言
publicclassMain{
publicstaticvoidmain(String[]args)throwsIOException{
BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in));
Strings=reader.readLine();
intn=Integer.valueOf(s);
intf1=1,f2=1,f3=0;
if(n<
3){
System.out.print("
1"
return;
for(inti=3;
i<
i++)
{if(f1>
10007)f1=f1%10007;
if(f2>
10007)f2=f2%10007;
f3=f1+f2;
System.out.print(f3%10007);
【3】
入门训练序列求和
求1+2+3+...+n的值。
输入包括一个整数n。
输出一行,包括一个整数,表示1+2+3+...+n的值。
4
100
有一些试题会给出多组样例输入输出以帮助你更好的做题。
一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例数据都正确了你的程序就是完全正确的,潜在的错误可能仍然导致你的得分较低。
5050
=1,000,000,000。
请注意这里的数据规模。
本题直接的想法是直接使用一个循环来累加,然而,当数据规模很大时,这种“暴力”的方法往往会导致超时。
此时你需要想想其他方法。
你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。
本题另一个要值得注意的地方是答案的大小不在你的语言默认的整型(int)范围内,如果使用整型来保存结果,会导致结果错误。
如果你使用C++或C语言而且准备使用printf输出结果,则你的格式字符串应该写成%I64d以输出longlong类型的整数。
#include<
longlongn,s=0;
%I64d"
if(n%2==0)
s=(1+n)*n/2;
else
s=(1+n)*n/2+n/2;
s);
intn;
longlongret=0,tmp;
tmp=n;
(1+tmp)*tmp/2);
publicstaticvoidmain(Stringargs[])throwsNumberFormatException,IOException{
BufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in));
longi=Integer.parseInt(strin.readLine());
longsum=(1+i)*i/2;
System.out.println(sum);
【4】
入门训练圆的面积
给定圆的半径r,求圆的面积。
输入包含一个整数r,表示圆的半径。
输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。
在本题中,输入是一个整数,但是输出是一个实数。
对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。
实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。
50.2654825
=r<
提示
本题对精度要求较高,请注意π的值应该取较精确的值。
你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。
math.h>
#definePIatan(1.0)*4
intr=0;
doubles=0;
r);
s=PI*r*r;
%.7f"
intr;
doubles,PI;
PI=atan(1.0)*4;
s=PI*r*r;
%.7lf"
s);
importjava.math.BigDecimal;
7071publicclassMain{
publicstaticvoidmain(String[]args)throwsIOException{
//TODOAuto-generatedmethodstub
BufferedReaderbf=newBufferedReader(newInputStreamReader(System.in));
BigDecimalbg=newBigDecimal(bf.readLine());
BigDecimalvalue=bg.multiply(bg.multiply(newBigDecimal(Math.PI))).setScale(7,BigDecimal.ROUND_HALF_UP);
System.out.println(value);
【5】
基础练习闰年判断
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1.年份是4的倍数而不是100的倍数;
2.年份是400的倍数。
其他的年份都不是闰年。
输入包含一个整数y,表示当前的年份。
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。
2013
no
2016
yes
1990<
=y<
=2050。
inty;
y);
if(y%4==0&
&
y%100!
=0||y%400==0)
yes\n"
no\n"
【6】
基础练习01字串
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。
它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
本试题没有输入。
输出32行,按从小到大的顺序每行一个长度为5的01串。
<
以下部分省略>
inta,b,c,d,e;
for(e=0;
e<
=1;
e++)
for(d=0;
d<
d++)
for(c=0;
c<
c++)
for(b=0;
b<
b++)
for(a=0;
a<
a++)
%d%d%d%d%d\n"
e,d,c,b,a);
【7】
基础练习字母图形
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出n行,每个m个字符,为你的图形。
57
=n,m<
=26。
intn,m,j,k;
%d%d"
n,&
m);
=1&
m<
=26)
for(j=0;
j<
n;
j++)
for(k=0;
k<
m;
k++)
%c"
65+abs(j-k));
\n"
#defineMAXSIZE26
//输出
voidPrint(charmatrix[MAXSIZE][MAXSIZE],intn,intm)
inti,j;
for(i=0;
matrix[i][j]);
//实现字母图形
voidDrawing(intn,intm)
intpoint=0;
charstr;
charmatrix[MAXSIZE][MAXSIZE];
str='
A'
;
for(j=i;
matrix[i][j]=str++;
for(j=i-1;
j>
=0;
j--)
matrix[i][j]=++str;
Print(matrix,n,m);
intn,m;
Drawing(n,m);
【8】
基础练习数列特征
给出n个数,找出这n个数的最大值,最小值,和。
第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
输出三行,每行一个整数。
第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
5
13-245
-2
11
#defineMaxSize10000
intsum=0,min=MaxSize,max=-MaxSize;
while(n--)
inttemp,st;
temp);
if(temp>
max)
max=temp;
if(temp<
min)
min=temp;
sum+=temp;
%d\n%d\n%d\n"
max,min,sum);
【9】
基础练习查找整数
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
6
194839
9
2
=1000。
#defineMaxSize1000+5
intn,i,a[MaxSize],s,m=0;
%d"
a[i]);
}
s);
if(s==a[i])
i+1);
-1\n"
【10】
基础练习回文数
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
按从小到大的顺序输出满足条件的四位十进制数。
inta,b,i;
for(a=1;
=9;
%d%d%d%d\n"
a,b,b,a);
inta,b,c,d,i;
for(i=1000;
=9999;
{
a=i/1000;
b=i/100%10;
c=i/10%10;
d=i%10;
if(a==d&
b==c)
i);
return0;
【11】
基础练习特殊回文数
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n,编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。
输入一行,包含一个正整数n。
按从小到大的顺序输出满足条件的整数,每个整数占一行。
52
899998
989989
998899
数据规模和约定
1<
=n<
=54。
intn,a,b,c;
if(n==2*a+2*b+c)
a,b,c,b,a);
if(n==2*a+2*b+2*c)
%d%d%d%d%d%d\n"
a,b,c,c,b,a);
inta,b,c,d,e,f,t,all;
t);
10;
if(a==e)
if(b==d)
all=a+b+c+d+e;
if(all==t)
a*10000+b*1000+c*100+d*10+e);
for(b=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蓝桥杯 ACM 决赛 经典 试题 及其 详解
![提示](https://static.bingdoc.com/images/bang_tan.gif)