蓝桥杯试题集练习(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]为空。