蓝桥杯官网题解——入门训练 {Fibonacci数列、圆的面积、序列求和}

1. Fibonacci数列
蓝桥杯官网题解——入门训练 {Fibonacci数列、圆的面积、序列求和}
思路: 可以按常规计算f(n),然后再去%10007得到余数,这显然不是出题人的意愿,可能超时。用一个数组存它的余数,这就像是把迭代优化为数组去解题。

import java.util.Scanner;
public class lanqiao1 {
  static long []a = new long[10000000];
  public static long fib(int n){
	  a[1]=1;
	  a[2]=1;
      for(int i=3;i<=n;i++){
    	  a[i] = (a[i-1]+a[i-2])%10007;
      } 
      return a[n];
  }
  public static void main(String []args){
	  Scanner obj = new Scanner(System.in); 
	  int n = obj.nextInt();
	  System.out.println(fib(n));
  }
}

2. 圆的面积
蓝桥杯官网题解——入门训练 {Fibonacci数列、圆的面积、序列求和}
思路:要注意的就是Π的确定,用atan(1)*4确定 以及 保留小数点后7位。

import java.util.Scanner;
import java.lang.Math;

public class lanqiao1 {
  public static void main(String []args){
	 double PI=Math.atan(1.0)*4;  //求Π
	 Scanner obj = new Scanner(System.in);
	 int r = obj.nextInt();
	 double a = PI*r*r;
	 System.out.printf("%.7f",a);
  }
}

3. 序列求和
蓝桥杯官网题解——入门训练 {Fibonacci数列、圆的面积、序列求和}蓝桥杯官网题解——入门训练 {Fibonacci数列、圆的面积、序列求和}
思路:1.数据规模这么大,可能不在整型int范围内,换成长整型long;
2.“暴力”的累加方法往往会导致超时,换成1+2+3…+n = (1+n)*n/2

import java.util.Scanner;
public class lanqiao1 {
	public static long get(long n){
		long sum = (1+n)*n/2;
		return sum;
	}
  public static void main(String []args){
	  Scanner obj = new Scanner(System.in);
	  long n = obj.nextLong();
	  System.out.print(get(n));
	  }
 }

小结:熟悉一下oj系统。

蓝桥杯官网题解——入门训练 {Fibonacci数列、圆的面积、序列求和}蓝桥杯官网题解——入门训练 {Fibonacci数列、圆的面积、序列求和} S_123789 发布了41 篇原创文章 · 获赞 20 · 访问量 2935 私信 关注
上一篇:LeetCode算法题-Fibonacci Number(Java实现)


下一篇:《算法笔记》11.1小节——动态规划专题->动态规划的递归写法和递推写法->问题 A: Fibonacci