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

一、序列求和

     问题描述:求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时,程序开始回推,进行结果的运算。






  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值