1、01入门训练和基础练习入门训练和基础练习BEGIN-1、A+B问题问题描述输入A、B,输出A+B。说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标。输入格式输入的第一行包括两个整数,由空格分隔,分别表示A、B。说明:“输入格式”是描述在测试你的程序时,所给的输入一定满足的格式。做题时你应该假设所给的输入是一定满足输入格式的要求的,所以你不需要对输入的格式进行检查。多余的格式检查可能会适得其反,使用你的程序错误。在测试的时候,系统会自动将输入数据输入到你的程序中,你不能给任何提示。比如,你在输入的时候提示“请输入A、B”之类的话是不需要的,这些多余的输出会使得你的程序被判定为错误。
2、输出格式输出一行,包括一个整数,表示A+B的值。说明:“输出格式”是要求你的程序在输出结果的时候必须满足的格式。在输出时,你的程序必须满足这个格式的要求,不能少任何内容,也不能多任何内容。如果你的内容和输出格式要求的不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、计时或者统计的信息等。样例输入12 45说明:“样例输入”给出了一组满足“输入格式”要求的输入的例子。这里给出的输入只是可能用来测试你的程序的一个输入,在测试的时候,还会有更多的输入用来测试你的程序。样例输出57说明:“样例输出”给出了一组满足“输出格式”要求的输出的例子。样例输出中的结果是和样例输入中的是对应的,
3、因此,你可以使用样例的输入输出简单的检查你的程序。要特别指出的是,能够通过样例输入输出的程序并不一定是正确的程序,在测试的时候,会用很多组数据进行测试,而不局限于样例数据。有可能一个程序通过了样例数据,但测试的时候仍只能得0分,可能因为这个程序只在一些类似样例的特例中正确,而不具有通用性,再测试更多数据时会出现错误。比如,对于本题,如果你写一个程序不管输入是什么都输入57,则样例数据是对的,但是测试其他数据,哪怕输入是1和2,这个程序也输出57,则对于其他数据这个程序都不正确。数据规模与约定-10000 = A, B = 10000。说明:“数据规模与约定”中给出了试题中主要参数的范围。这个范
4、围对于解题非常重要,不同的数据范围会导致试题需要使用不同的解法来解决。比如本题中给的A、B范围不大,可以使用整型(int)来保存,如果范围更大,超过int的范围,则要考虑其他方法来保存大数。有一些范围在方便的时候是在“问题描述”中直接给的,所以在做题时不仅要看这个范围,还要注意问题描述。代码import java.util.*; public class Main public static void main(String args) Scanner sc = new Scanner(System.in); Integer a = sc.nextInt(); Integer b = sc.n
5、extInt(); 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。说明:请注意这里的数据规模。本题直接的想法是直接使用一个循环来累加,然而,
6、当数据规模很大时,这种“暴力”的方法往往会导致超时。此时你需要想想其他方法。你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。本题另一个要值得注意的地方是答案的大小不在你的语言默认的整型(int)范围内,如果使用整型来保存结果,会导致结果错误。如果你使用C+或C语言而且准备使用printf输出结果,则你的格式字符串应该写成%I64d以输出long long类型的整数。代码:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStre
7、amReader;public class Main public static void main(String args) throws NumberFormatException, IOException BufferedReader strin = new BufferedReader(new InputStreamReader(System.in); long i = Integer.parseInt(strin.readLine(); long sum = (1+i)*i/2; System.out.println(sum); BEGIN-3 圆的面积问题描述给定圆的半径r,求圆的
8、面积。输入格式输入包含一个整数r,表示圆的半径。输出格式输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。说明:在本题中,输入是一个整数,但是输出是一个实数。对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。样例输入4样例输出50.2654825数据规模与约定1 = r = 10000。提示本题对精度要求较高,请注意的值应该取较精确的值。你可以使用常量来表示,比如PI=3.14159265358979323,
9、也可以使用数学公式来求,比如PI=atan(1.0)*4。代码:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.math.BigDecimal;public class Main /* * param args * throws IOException */ public static void main(String args) throws IOException / TODO Auto-generated method stub Bu
10、fferedReader bf = new BufferedReader(new InputStreamReader(System.in); BigDecimal bg = new BigDecimal(bf.readLine(); BigDecimal value = bg.multiply(bg.multiply(new BigDecimal(Math.PI).setScale(7,BigDecimal.ROUND_HALF_UP); System.out.println(value); BEGIN-4 Fibonacci数列问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn
11、-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。样例输入10样例输出55样例输入22样例输出7704数据规模与约定代码:import java.io.BufferedReader;import java.io.IOException;import java.io.I
12、nputStreamReader;public class Main public static void main(String args) throws IOException BufferedReader reader=new BufferedReader(new InputStreamReader(System.in); String s=reader.readLine(); int n=Integer.valueOf(s); int f1=1,f2=1,f3=0; if(n3) System.out.print(1); return; for(int i=3;i10007)f1=f1
13、%10007; if(f210007)f2=f2%10007; f3=f1+f2; f1=f2; f2=f3; System.out.print(f3%10007); 1 = n = 1,000,000。基础练习BASIC-1 闰年判断问题描述给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:1. 年份是4的倍数而不是100的倍数;2. 年份是400的倍数。其他的年份都不是闰年。输入格式输入包含一个整数y,表示当前的年份。输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试
14、题中给定的大小写,写错大小写将不得分。样例输入2013样例输出no样例输入2016样例输出yes数据规模与约定1990 = y = 2050。代码import java.io.*;import java.util.Scanner;import java.io.InputStreamReader;import java.*;public class Main public static void main(String args) throws NumberFormatException, IOException BufferedReader bf1=new BufferedReader(new
15、 InputStreamReader(System.in); int num=Integer.parseInt(bf1.readLine(); if(num%4=0&num%100!=0)|(num%400=0) System.out.println(yes); else System.out.println(no); BASIC-2 01字串问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行,按从小到大的顺序每行一个长度为
16、5的01串。样例输出00000000010001000011代码: public class Mainpublic static void main (String args) for(int a1=0;a12;a1+) for(int a2=0;a22;a2+) for(int a3=0;a32;a3+) for(int a4=0;a42;a4+) for(int a5=0;a52;a5+) StringBuffer s=new StringBuffer(); System.out.println(s.append(a1).append(a2).append(a3).append(a4).a
17、ppend(a5); BASIC-3 字母图形问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符,为你的图形。样例输入5 7样例输出ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC数据规模与约定1 = n, m = 26。代码:import java.io.BufferedReader;import java.io.IO
18、Exception;import java.io.InputStreamReader;class Main public static void main(String args) throws IOException BufferedReader br=new BufferedReader(new InputStreamReader(System.in); String s=br.readLine(); String sa=s.split( ); char a =new char Integer.parseInt(sa1); int max=Integer.parseInt(sa0); in
19、t t=0; for(int j=0;ja.length;j+) a j =(char) (B+j); for(int k=0;kmax;k+) for(int i=0;ia.length;i+) if(it) ai=(char)(ai+1); else ai=(char)(ai-1); t+; System.out.print(a); System.out.println(); BASIC-4 数列特征问题描述给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一
20、行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入51 3 -2 4 5样例输出5-211数据规模与约定1 = n = 10000。代码:import java.io.*;public class Main public static void main(String args)throws Exception int n; int sum=0; String str=null; String str2=null; BufferedReader buf=new BufferedReader(new InputStreamReader(System.in); st
21、r=buf.readLine(); n=Integer.parseInt(str); str2=buf.readLine(); String a=str2.split( ); int array2=new intn; for(int i=0;in;i+) array2i=Integer.parseInt(ai); sum=sum+array2i; java.util.Arrays.sort(array2); System.out.println(array2n-1); System.out.println(array20); System.out.println(sum); BASIC-5 查
22、找整数问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。样例输入61 9 4 8 3 99样例输出2数据规模与约定1 = n = 1000。代码:import java.io.*;import java.util.Arrays;import java.util.Scanner;import java.io.InputStreamReader;pub
23、lic class Main static int fun(int num,int nn) for(int i=0;inum.length;i+) if(numi=nn) return i+1; return -1; public static void main(String args) throws NumberFormatException, IOException BufferedReader bf1=new BufferedReader(new InputStreamReader(System.in); int n=Integer.parseInt(bf1.readLine(); S
24、tring s1=bf1.readLine().split( ); int num=new intn; for(int i=0;in;i+) numi=Integer.parseInt(s1i); int nn=Integer.parseInt(bf1.readLine(); System.out.println(fun(num, nn); BASIC-6 杨辉三角形问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行: 1 1 1 1 2 11 3 3 1给出n,输出它
25、的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。样例输入4样例输出11 11 2 11 3 3 1数据规模与约定1 = n = 34。代码:import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException; public class Main public static void main(String args) throws IOException BufferedRea
26、der br=new BufferedReader(new InputStreamReader(System.in); int n=Integer.parseInt(br.readLine(); int a=new int3434; int i=0,j=1; while(i34) ai0=1; i+; while(j34) ajj=1; j+; for(i=2;i34;i+) for(j=1;ji;j+) aij=ai-1j-1+ai-1j; for(i=0;in;i+) for(j=0;j=i;j+) System.out.print(aij+ ); System.out.println(
27、); BASIC-7 特殊的数字问题描述153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。代码:import java.util.Arrays;public class Main public static void main(String args) StringBuffer string = new StringBuffer(); for(int a=1;a10;a+) for(int b=0;b10;b+) for(int c=0;c1
28、0;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 = new intstr.length; for(int i=0;istr.length;i+) numi = Integer.parseInt(stri); Arrays.sort(num); for(int i:num) System.out.println(i); BASIC-8 回文数问题描述1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1