蓝桥杯试题集练习(Java版)

蓝桥杯试题集练习(Java版)

第一次写博客,如有不妥之处请多指教~
自己写的 仅供参考

入门训练

BEGIN-1 A+B问题
import java.util.*;

public class Main
{
   public static void main(String args[])
   {
       Scanner sc = new Scanner(System.in);
       Integer a = sc.nextInt();
       Integer b = sc.nextInt();
       System.out.println(a + b);
   }
}
BEGIN-2 序列求和
import java.util.Scanner;

public class Main {
	public static void main(String args[])
	{
		Scanner input = new Scanner(System.in);
		long n = input.nextLong();
		long sum =(1+n)*n/2 ;
		System.out.println(sum);
	}
}

要点与心得

  • 其实用for循环也没什么问题,只不过不如公式来的简单
  • int 表示 -2^31 到 2^31-1,long 表示 -2^63 至2^63-1
BEGIN-3 圆的面积
import java.util.Scanner;

public class Main {
	public static void main(String args[])
	{
		Scanner input=new Scanner(System.in);
		int r= input.nextInt();
		double PI=3.14159265358979323;
		double area= PI*r*r;
		System.out.print(String.format("%.7f", area));
	}
}

要点与心得

  • String.format 字符串格式化,返回的是String类型的字符串。打印最简便。
  • 转化最简便的另一种方法:
public void m1() {
            BigDecimal bg = new BigDecimal(f);
            double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            System.out.println(f1);
        }
//打印的是保留两位小数的
BEGIN-4 Fibonacci数列
import java.util.Scanner;

public class Main {
	public static void main(String args[])
	{
		Scanner input = new Scanner(System.in);
		int n = input.nextInt();
		
		int[]a=new int[n+1];
		if(n<3)
		{
			System.out.println(1);
		}
		else
		{
			a[1]=1;
			a[2]=1;
			for(int i=3;i<=n;i++)
			{
				a[i]=(a[i-1]+a[i-2])%10007;
			}
			System.out.println(a[n]);
		}	
	}
}

要点及心得

  • 在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
    (否则数组中每个数会越存越大,可能会出界)
  • 一定要考虑n=1和n=2这样的细节。诸如a[1]=1和a[2]=1,要放在else中,否则若写在if前面按照此写法输入n=1时,a[2]为空。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值