- 问题 1004: [递归]母牛的故事
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 6 | 9 | 13 | 19 | 28 |
易知f(n)=f(n-1)+f(n-3)
使用数组存储数据,若只使用递归,每计算一个n值都需要重新算之前所有值
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] n=new int[55];
Scanner sc=new Scanner(System.in);
for(int i=0;i<4;i++) {
n[i]=i+1;
}
for(int i=4;i<55;i++) {
n[i]=n[i-1]+n[i-3];
}
while(sc.hasNext()) {
int i=sc.nextInt();
if(i==0)
return;
System.out.println(n[i-1]);
}
sc.close();
}
}
- 问题 1083: Hello, world!
This is the first problem for test. Since all we know the ASCII code, your job is simple: Input numbers and output corresponding messages.(这是测试的第一个问题。由于所有我们知道的ASCII码,你的工作很简单:输入数字和相应的输出消息。)
即给出一串ASCII码,将相应的字符输出
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
char c=(char)sc.nextInt();
System.out.print(c);
}
sc.close();
}
}
- 问题 1084: 用筛法求之N内的素数
埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。
建立数组,将下标当作数,由值01来判定是否筛过即可
import java.util.Scanner;
public class Main {
//0为素数 1非素数
public static void main(String[] args) {
int[] prime=new int[10000];
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
prime[0]=prime[1]=1;
for(int i=2;i<=n;i++) {
if(prime[i]==0) {
for(int j=2;j*j<=n;j++) {
prime[i*j]=1;
}
}
}
for(int i=0;i<=n;i++) {
if(prime[i]==0)
System.out.println(i);
}
sc.close();
}
}
- 问题 1093: 字符逆序
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
for(int i=s.length()-1;i>=0;i--) {
System.out.print(s.charAt(i));
}
sc.close();
}
}
- 问题 1094: 字符串的输入输出处理
输入
第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。
输出
先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//这里不先读一行的话会读取一行空格,原因不明
sc.nextLine();
while(n>0) {
System.out.println(sc.nextLine()+"\n");
n--;
}
while(sc.hasNext()) {
System.out.println(sc.next()+"\n");
}
}
}