蓝桥杯-----入门训练(序列求和,圆的面积,Fibonacci数列)JAVA代码

来源:互联网 发布:oracle数据库错误日志 编辑:程序博客网 时间:2024/06/10 22:18

一、序列求和

     问题描述:求1+2+3+...+n的值。这道题对有一点算法基础的人来说都很容易,就是数学规律的代码呈现。在数学中有自然数数列的求和可以通过:首项加尾项乘以项数除以2来得到。而这种思想完全可以通过代码进行实现。下面给出代码:

import java.util.Scanner;public class 序列求和 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);long n;n = sc.nextInt();long total = 0;total = ((1+n)*n)/2;System.out.println(total);}}
n值为序列的最大值,因为n值得范围超出了int类型的范围所以采用long类型进行定义。然后模拟数学公式得出结果。

二、圆的面积

    问题描述:给定圆的半径r,求圆的面积。与上一题的解决思想一样,将数学公式用代码进行呈现即可。下面给出代码:

import java.math.BigDecimal;import java.util.Scanner;public class 圆的面积 {public static void main(String[] args) {double PI = 3.14159265358979323;int r;Scanner sc = new Scanner(System.in);r = sc.nextInt();System.out.println(new BigDecimal(PI*r*r).setScale(7, BigDecimal.ROUND_HALF_UP)); }}
由于题目要求的精度比较高,所以引用高精度类BigDecimal进行圆面积的计算,并且小数点后面采用四舍五入进行取值,有关这个类的使用请阅读我的另一篇博客"Java高精度数值运算方法,小数点后保留位置"进行学习。

三、Fibonacci数列

    问题描述:Fibonacci数列的递推公式为:Fn = Fn-1 + Fn-2,其中F1 =F2 =1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。这题如果对递归理解的很熟悉的话,可以很明显的感觉到题目就在给出递归的相应条件,公式就是递归的部分,而F1 =F2 =1就是递归结束的标志。下面给出代码进行分析:

import java.util.Scanner;public class Fibonacci数列 {public static void main(String[] args) {int f[] = new int[1000000];f[1]=f[2]=1;for(int i = 3;i<1000000;i++ ){f[i]=(f[i-1]+f[i-2])%10007;}Scanner sc = new Scanner(System.in);int n;n = sc.nextInt();System.out.println(f[n]);}}
和公式中给出的运算方式一样,而结束的条件就是当递归走到F1 = F2 =1时,程序开始回推,进行结果的运算。






阅读全文
0 0
原创粉丝点击