一、Fibonacci数列
在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
1.类名称必须采用public class Main方式命名
2.int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次 方到2的31次方-1),一个字节占8位,也就是32位。所以注意题目给出的参数范围是否在int的取值范围内,或者当参数运算后的值是否在int的取值范围。
3.输入输出
格式1:Scanner sc = new Scanner (new BufferedInputStream(System.in))
格式2:Scanner sc = new Scanner (System.in);
在读入数据量大的情况下,格式1的速度会快些。
读一个整数: int n = sc.nextInt();
读一个字符串:String s = sc.next();
读一个浮点数:double t = sc.nextDouble();
读一整行: String s = sc.nextLine();
判断是否有下一个输入可以用sc.hasNext()或sc.hasNextInt()或sc.hasNextDouble()或sc.hasNextLine()
4.本题编程技巧
要计算只包含加法、减法和乘法的整数表达式除以正整数n的余数,可以在每步计算之后对n取余,结果不变。
import java.util.Scanner;
public class Main{
public static void main(String[] argd){
Scanner s=new Scanner(System.in);
int n=s.nextInt();
int[]f=new int[1000000];
f[0]=1;
f[1]=1;
for(int i=2;i<n;i++){
f[i]=(f[i-1]+f[i-2])%10007;
}
System.out.println(f[n-1]);
}
}
二、圆的面积
在本题中,输入是一个整数,但是输出是一个实数。
对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。
实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。
本题对精度要求较高,请注意π的值应该取较精确的值。你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。
1.DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置,如果不存在则显示为空。
2.在Java语言中,主要是利用final关键字(在Java类中灵活使用static关键字)来定义常量。常量被设定后,一般情况下就不允许再进行更改。如可以利用如下的形式来定义一个常量:final double PI=3.1315。
3.String shuchu = df.format(area);格式化一个 double 值,以生成一个字符串。
import java.text.DecimalFormat;
import java.util.Scanner;
/*给定圆的半径r,求圆的面积。*/
public class Main {
//定义pi
public static final double PI=3.14159265358979323;
public static void main(String[] args) {
//接收控制台的输入
Scanner sc=new Scanner(System.in);
//取出输入的数字
int r=sc.nextInt();
//计算面积
double area=PI*(r*r);
//创建DecimalFormat类来格式化面积
DecimalFormat df=new DecimalFormat("0.0000000");
//输出语句
System.out.println(df.format(area));
}
}