ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-01-31 15:09:19  阅读:231  来源: 互联网

标签:Scanner 题解 System long 蓝桥 static Fibonacci import public


1. Fibonacci数列
**问题描述**:Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
思路: 可以按常规计算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. 圆的面积
在这里插入图片描述
思路:要注意的就是Π的确定,用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. 序列求和
在这里插入图片描述在这里插入图片描述
思路: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系统。

S_123789 发布了41 篇原创文章 · 获赞 20 · 访问量 2935 私信 关注

标签:Scanner,题解,System,long,蓝桥,static,Fibonacci,import,public
来源: https://blog.csdn.net/S_123789/article/details/104029302

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有