1、兔子繁殖问题
题目:已知有一对兔子,每个月可以生一对兔子,而小兔子一个月后又可以生一对小兔子(比如:2月份出生的小兔子4月份可以生育)。也就是说,兔子的对数为:第一个月1对,第二个月2对,第三个月3对,第四个月5对.....假设兔子的生育期为两年,且不死。那么问题来了,你能说出每个月的兔子数么?
输入格式:
输入一个数n,表示第n个月,1<=n<=24。
输出格式:
输出这个月兔子的数目。
输入样例:
4
输出样例:
5
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
源代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int months = scanner.nextInt();
int[] rabbitCounts = new int[months];
rabbitCounts[0] = 1; // 第一个月1对兔子
rabbitCounts[1] = 2; // 第二个月2对兔子
for (int i = 2; i < months; i++) {
rabbitCounts[i] = rabbitCounts[i - 1] + rabbitCounts[i - 2];
}
System.out.println(rabbitCounts[months-1]);
}
}
2、判断闰年
题目:根据输入的正整数y所代表的年份,计算输出该年份是否为闰年
闰年的判断标准:
能够被4整除且不能被100整除的年份或者能够被400整除的年份
输入格式:
输入n取值范围是 【1..3000】
输出格式:
是闰年,输出 yes
非闰年,输出 no
输入样例:
在这里给出一组输入。例如:
100
输出样例:
在这里给出相应的输出。例如:
no
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
源代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt();
if((year%4==0&&year%100!=0)||(year%400==0))
{
System.out.print("yes");
}
else
{
System.out.print("no");
}
}
}
3、空心字母金字塔
一个大写英文字母。
输出格式:
一个空心的大写英文字母金字塔,其中第1层的“A”在第1行的第40列,列从1开始计数。
输入样例:
E
输出样例:
A
B B
C C
D D
EEEEEEEEE
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
源代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char letter = scanner.next().charAt(0);
int height = letter - 'A' + 1;
for (int i = 1; i <= height; i++) {
for (int j = 1; j <= 40 - i; j++) {
System.out.print(" ");
}
System.out.print((char) ('A' + i - 1));
if (i > 1&&i<height) {
for (int j = 1; j < 2*i-2 ; j++) {
System.out.print(" ");
}
System.out.print((char) ('A' + i - 1));
}
if(i!=height) {
System.out.println();
}
if(i==height) {
for (int j = 0; j < 2*i-2; j++)
System.out.print(letter);
break;
}
}
}
}
4、特殊回文数
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式:
输入一行,包含一个正整数n。数据规模和约定1<=n<=54。
输出格式:
按从小到大的顺序输出满足条件的整数,每个整数占一行。
输入样例:
在这里给出一组输入。例如:
52
输出样例:
在这里给出相应的输出。例如:
899998
989989
998899
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
源代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
for(int i=10000;i<100000;i++)
{
int a=i/10000;
int b=i/1000%10;
int c=i/100%10;
int d=i/10%10;
int e=i%10;
if(a+b+c+d+e==num&&(a==e&&b==d))
{
System.out.println(i);
}
}
for(int i=100000;i<1000000;i++)
{
int a=i/100000;
int b=i/10000%10;
int c=i/1000%10;
int d=i/100%10;
int e=i/10%10;
int f=i%10;
if(a+b+c+d+e+f==num&&(a==f&&b==e&&c==d))
{
System.out.println(i);
}
}
}
}
5、根据和找到最大乘积
试求和为N,积为最大的两个整数数分别是多少。
从键盘中输入一个整数,它是另外两个整数(不同时为0)的加法运算和,这样的两个整数的组合有很多种,请找出乘积最大的一组数据。
请注意输出两个整数以空格分割,按由小到大的顺序输出。
输入格式:
从键盘中输入一个整数
输出格式:
在一行中输出两个整数(不同时为0),以空格分割,按由小到大的顺序输出。
输入样例:
33
输出样例:
16 17
输入样例:
-51
输出样例:
-26 -25
代码长度限制 16 KB
时间限制 1000 ms
内存限制 64 MB
源代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int num1 = 0, num2 = 0;
if(N>0)
{
num1=N/2;
if(N%2==0) {
num2 = N / 2 ;
}
else {
num2 = N / 2+1;
}
}
else
{
if(N%2==0) {
num1 = N / 2 ;
}
else {
num1 = N / 2-1;
}
num2=N/2;
}
if(num1==0&num2==0)
{
num1=-1;
num2=1;
System.out.println(num1+" "+num2);
}else{
System.out.println(num1+" "+num2);
}
}
}