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

我会带着你远行 2022-06-04 23:48 316阅读 0赞

一、序列求和

  1. 问题描述:求1+2+3+...+n的值。这道题对有一点算法基础的人来说都很容易,就是数学规律的代码呈现。在数学中有自然数数列的求和可以通过:首项加尾项乘以项数除以2来得到。而这种思想完全可以通过代码进行实现。下面给出代码:
  2. import java.util.Scanner;
  3. public class 序列求和 {
  4. public static void main(String[] args) {
  5. Scanner sc = new Scanner(System.in);
  6. long n;
  7. n = sc.nextInt();
  8. long total = 0;
  9. total = ((1+n)*n)/2;
  10. System.out.println(total);
  11. }
  12. }

n值为序列的最大值,因为n值得范围超出了int类型的范围所以采用long类型进行定义。然后模拟数学公式得出结果。

二、圆的面积

  1. 问题描述:给定圆的半径r,求圆的面积。与上一题的解决思想一样,将数学公式用代码进行呈现即可。下面给出代码:
  2. import java.math.BigDecimal;
  3. import java.util.Scanner;
  4. public class 圆的面积 {
  5. public static void main(String[] args) {
  6. double PI = 3.14159265358979323;
  7. int r;
  8. Scanner sc = new Scanner(System.in);
  9. r = sc.nextInt();
  10. System.out.println(new BigDecimal(PI*r*r).setScale(7, BigDecimal.ROUND_HALF_UP));
  11. }
  12. }

由于题目要求的精度比较高,所以引用高精度类BigDecimal进行圆面积的计算,并且小数点后面采用四舍五入进行取值,有关这个类的使用请阅读我的另一篇博客”Java高精度数值运算方法,小数点后保留位置”进行学习。

三、Fibonacci数列

  1. 问题描述:Fibonacci数列的递推公式为:Fn = Fn-1 + Fn-2,其中F1 =F2 =1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。这题如果对递归理解的很熟悉的话,可以很明显的感觉到题目就在给出递归的相应条件,公式就是递归的部分,而F1 =F2 =1就是递归结束的标志。下面给出代码进行分析:
  2. import java.util.Scanner;
  3. public class Fibonacci数列 {
  4. public static void main(String[] args)
  5. {
  6. int f[] = new int[1000000];
  7. f[1]=f[2]=1;
  8. for(int i = 3;i<1000000;i++ )
  9. {
  10. f[i]=(f[i-1]+f[i-2])%10007;
  11. }
  12. Scanner sc = new Scanner(System.in);
  13. int n;
  14. n = sc.nextInt();
  15. System.out.println(f[n]);
  16. }
  17. }

和公式中给出的运算方式一样,而结束的条件就是当递归走到F1 = F2 =1时,程序开始回推,进行结果的运算。

发表评论

表情:
评论列表 (有 0 条评论,316人围观)

还没有评论,来说两句吧...

相关阅读