目录
1. 闰年判断
2.01字串
3.字母图形
4.数列特征
5.查找整数
6.杨辉三角形
1. 闰年判断
问题描述
资源限制
时间限制:1.0s 内存限制:256.0MB问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。输入格式
输入包含一个整数y,表示当前的年份。输出格式
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。
测试样例1
样例输入
2013样例输出
no
测试样例2
样例输入
2016样例输出
yes
数据规模与约定
1990 <= y <= 2050。
代码:
Java源代码:
import java.util.*;public class Main
{public static void main(String args[]){// 试题 基础练习 闰年判断Scanner sc = new Scanner(System.in);int num = sc.nextInt();if ((num % 4 == 0 && num % 100 != 0) || (num % 400 == 0)) {System.out.println("yes");} else {System.out.println("no");}}
}
2.01字串
问题描述
资源限制
时间限制:1.0s 内存限制:256.0MB问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。
测试样例
输入格式
本试题没有输入。输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。样例输出
00000
00001
00010
00011
<以下部分省略>
代码:
Java源代码:
方法一:用5个循环的方式来做。import java.util.*;public class Main
{public static void main(String args[]){//五层循环 第一层是第一个数 第二层是第二个数 以此类推 for (int i = 0; i <= 1; i++) {for (int j = 0; j <= 1; j++) {for (int a = 0; a <= 1; a++) {for (int k = 0; k <= 1; k++) {for (int b = 0; b <= 1; b++) {System.out.print(i);System.out.print(j);System.out.print(a);System.out.print(k);System.out.println(b);//最后用println()输出}}}}}}
}方法二:利用十进制转二进制的方式。import java.util.*;public class Main
{public static void main(String args[]){for (int i = 0; i < 32; i++) {System.out.print(i%32/16);System.out.print(i%16/8);System.out.print(i%8/4);System.out.print(i%4/2);System.out.println(i%2);}}
}
3.字母图形
问题描述
资源限制
时间限制:1.0s 内存限制:256.0MB问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式
输出n行,每个m个字符,为你的图形。
测试样例1
样例输入
5 7样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。
代码:
Java源代码:
思路:
1.都是以A为标准对称来做的,把A当作标准
2.每增加一行A的位置就往后移一行就
3.for循环来进行修改 65就是A的ASCII值 用char来弄每一个字母import java.util.*;public class Main
{public static void main(String args[]){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {char c = (char) (Math.abs(i - j) + 'A');System.out.print(c);}System.out.println();}
}
4.数列特征
问题描述
资源限制
时间限制:1.0s 内存限制:256.0MB问题描述
给出n个数,找出这n个数的最大值,最小值,和。输入格式
第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
测试样例1
样例输入
5
1 3 -2 4 5样例输出
5
-2
11
数据规模与约定
1 <= n <= 10000。
代码:
Java源代码:
思路:
通过临时变量实现。将输入值存储到临时变量中,
然后求和并与当前的最大值、最小值进行比较,若大于当前的最大值则将
临时变量的值赋给新的最大值,小于当前的最小值则将临时变量的值赋给新的最小值import java.util.*;public class Main
{public static void main(String args[]){Scanner sc = new Scanner(System.in);int n = sc.nextInt();// 输入的个数long sum = 0;// 相加和int k; // 输入的数int max = -10000; // 最大值int min = 10000; // 最小值for (int i = 0; i < n; i++) {k = sc.nextInt();sum += k;if (k > max) {max = k;}if (k < min) {min = k;}}System.out.println(max + "\n" + min + "\n" + sum);}
}
5.查找整数
问题描述
资源限制
时间限制:1.0s 内存限制:256.0MB问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
测试样例1
样例输入
6
1 9 4 8 3 9
9样例输入
6
1 9 4 8 3 9
9
数据规模与约定
1 <= n <= 1000。
代码:
Java源代码:
import java.util.*;public class Main
{public static void main(String args[]){// 试题 基础练习 查找整数Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();List<Integer> list = new ArrayList<>();for(int i = 0;i < n;i++){list.add(scanner.nextInt());}int result = list.indexOf(scanner.nextInt());System.out.println(result != -1 ? result + 1 : result);}
}
6.杨辉三角形
问题描述
资源限制
时间限制:1.0s 内存限制:256.0MB问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行: 11 11 2 11 3 3 1给出n,输出它的前n行。输入格式
输入包含一个数n。输出格式
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
测试样例1
样例输入
4样例输出
1
1 1
1 2 1
1 3 3 1
数据规模与约定
1 <= n <= 34。
代码:
Java源代码:
import java.util.*;public class Main
{public static void main(String args[]){// 这种方法可以缩短时间复杂度,而且简单,重点掌握Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[][] nums = new int[n][n];for (int i = 0; i < n; i++) {Long number = (long) 1;for (int j = 0; j <= i; j++) {System.out.print(number + " ");// number = number*(i-j)/(j+1)是重点// 数据过大可能溢出,用Long型number = (Long) number * (i - j) / (j + 1);}System.out.println();}}
}