01入门训练和基础练习Word文件下载.docx
- 文档编号:22234750
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:90
- 大小:37.67KB
01入门训练和基础练习Word文件下载.docx
《01入门训练和基础练习Word文件下载.docx》由会员分享,可在线阅读,更多相关《01入门训练和基础练习Word文件下载.docx(90页珍藏版)》请在冰豆网上搜索。
这个范围对于解题非常重要,不同的数据范围会导致试题需要使用不同的解法来解决。
比如本题中给的A、B范围不大,可以使用整型(int)来保存,如果范围更大,超过int的范围,则要考虑其他方法来保存大数。
有一些范围在方便的时候是在“问题描述”中直接给的,所以在做题时不仅要看这个范围,还要注意问题描述。
代码
importjava.util.*;
publicclassMain
{
publicstaticvoidmain(Stringargs[])
{
Scannersc=newScanner(System.in);
Integera=sc.nextInt();
Integerb=sc.nextInt();
System.out.println(a+b);
}
}
BEGIN-2序列求和
求1+2+3+...+n的值。
输入包括一个整数n。
输出一行,包括一个整数,表示1+2+3+...+n的值。
4
10
100
有一些试题会给出多组样例输入输出以帮助你更好的做题。
一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例数据都正确了你的程序就是完全正确的,
潜在的错误可能仍然导致你的得分较低。
5050
1<
=n<
=1,000,000,000。
请注意这里的数据规模。
本题直接的想法是直接使用一个循环来累加,然而,当数据规模很大时,这种“暴力”的方法往往会导致超时。
此时你需要想想其他方法。
你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。
本题另一个要值得注意的地方是答案的大小不在你的语言默认的整型(int)范围内,如果使用整型来保存结果,会导致结果错误。
如果你使用C++或C语言而且准备使用printf输出结果,则你的格式字符串应该写成%I64d以输出longlong类型的整数。
代码:
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
publicclassMain{
publicstaticvoidmain(Stringargs[])throwsNumberFormatException,IOException{
BufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in));
longi=Integer.parseInt(strin.readLine());
longsum=(1+i)*i/2;
System.out.println(sum);
BEGIN-3圆的面积
给定圆的半径r,求圆的面积。
输入包含一个整数r,表示圆的半径。
输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。
在本题中,输入是一个整数,但是输出是一个实数。
对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,
则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。
实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。
50.2654825
=r<
提示
本题对精度要求较高,请注意π的值应该取较精确的值。
你可以使用常量来表示π,
比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。
importjava.math.BigDecimal;
/**
*@paramargs
*@throwsIOException
*/
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);
BEGIN-4Fibonacci数列
Fibonacci数列的递推公式为:
Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入包含一个整数n。
输出一行,包含一个整数,表示Fn除以10007的余数。
在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,
而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
55
22
7704
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<
=n;
i++)
{if(f1>
10007)f1=f1%10007;
if(f2>
10007)f2=f2%10007;
f3=f1+f2;
f1=f2;
f2=f3;
System.out.print(f3%10007);
=1,000,000。
基础练习
BASIC-1闰年判断
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1.年份是4的倍数而不是100的倍数;
2.年份是400的倍数。
其他的年份都不是闰年。
输入包含一个整数y,表示当前的年份。
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。
2013
no
2016
yes
1990<
=y<
=2050。
importjava.io.*;
importjava.util.Scanner;
importjava.*;
publicclassMain
{
publicstaticvoidmain(String[]args)throwsNumberFormatException,IOException
BufferedReaderbf1=newBufferedReader(newInputStreamReader(System.in));
intnum=Integer.parseInt(bf1.readLine());
if((num%4==0&
&
num%100!
=0)||(num%400==0))
System.out.println("
yes"
else
no"
BASIC-201字串
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。
它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
本试题没有输入。
输出32行,按从小到大的顺序每行一个长度为5的01串。
<
以下部分省略>
publicclassMain{
publicstaticvoidmain(Stringargs[]){
for(inta1=0;
a1<
2;
a1++){
for(inta2=0;
a2<
a2++){
for(inta3=0;
a3<
a3++){
for(inta4=0;
a4<
a4++){
for(inta5=0;
a5<
a5++){
StringBuffers=newStringBuffer();
System.out.println(s.append(a1).append(a2).append(a3).append(a4).append(a5));
}
}
}
BASIC-3字母图形
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出n行,每个m个字符,为你的图形。
57
=n,m<
=26。
classMain
publicstaticvoidmain(String[]args)throwsIOException
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
Strings=br.readLine();
Stringsa[]=s.split("
"
chara[]=newchar[Integer.parseInt(sa[1])];
intmax=Integer.parseInt(sa[0]);
intt=0;
for(intj=0;
j<
a.length;
j++){
a[j]=(char)('
B'
+j);
for(intk=0;
k<
max;
k++){
for(inti=0;
i++){
if(i<
t){
a[i]=(char)(a[i]+1);
}else{
a[i]=(char)(a[i]-1);
t++;
System.out.print(a);
System.out.println();
BASIC-4数列特征
给出n个数,找出这n个数的最大值,最小值,和。
第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
输出三行,每行一个整数。
第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
5
13-245
-2
11
publicstaticvoidmain(Stringargs[])throwsException{
intn;
intsum=0;
Stringstr=null;
Stringstr2=null;
BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in));
str=buf.readLine();
n=Integer.parseInt(str);
str2=buf.readLine();
Stringa[]=str2.split("
intarray2[]=newint[n];
n;
i++){
array2[i]=Integer.parseInt(a[i]);
sum=sum+array2[i];
java.util.Arrays.sort(array2);
System.out.println(array2[n-1]);
System.out.println(array2[0]);
System.out.println(sum);
BASIC-5查找整数
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
6
194839
9
2
=1000。
importjava.util.Arrays;
staticintfun(int[]num,intnn)
num.length;
{
if(num[i]==nn)
returni+1;
return-1;
intn=Integer.parseInt(bf1.readLine());
String[]s1=bf1.readLine().split("
int[]num=newint[n];
num[i]=Integer.parseInt(s1[i]);
intnn=Integer.parseInt(bf1.readLine());
System.out.println(fun(num,nn));
BASIC-6杨辉三角形
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:
三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
11
121
1331
给出n,输出它的前n行。
输入包含一个数n。
输出杨辉三角形的前n行。
每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。
请不要在前面输出多余的空格。
1
11
121
1331
=34。
publicstaticvoidmain(Stringargs[])throwsIOException{
intn=Integer.parseInt(br.readLine());
int[][]a=newint[34][34];
inti=0,j=1;
while(i<
34){
a[i][0]=1;
i++;
while(j<
a[j][j]=1;
j++;
for(i=2;
34;
for(j=1;
i;
j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;
{for(j=0;
=i;
System.out.print(a[i][j]+"
System.out.println("
}
BASIC-7特殊的数字
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。
编程求所有满足这种条件的三位十进制数。
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
publicstaticvoidmain(Stringargs[]){
StringBufferstring=newStringBuffer();
for(inta=1;
a<
10;
a++){
for(intb=0;
b<
b++){
for(intc=0;
c<
c++){
if(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)==(a*100+b*10+c)){
string.append(a*100+b*10+c+"
"
}
String[]str=string.toString().split("
int[]num=newint[str.length];
str.length;
num[i]=Integer.parseInt(str[i]);
Arrays.sort(num);
for(inti:
num){
System.out.println(i);
BASIC-8回文数
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 01 入门 训练 基础 练习