蓝桥杯算法题练习
2018-11-22 本文已影响0人
tomlao
1.入门训练 Fibonacci数列
傅里叶级数最基础的,用java,普通无脑递归必爆。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] arr=new int[n+2]; //注意数组越界
arr[1]=1;arr[2]=1;
for(int i=3;i<=n;i++) {
arr[i]=(arr[i-1]+arr[i-2])%10007;
}
System.out.println(arr[n]);
}
}
2.入门训练 圆的面积
圆的面积注意输出的小数位格式方法。
import java.text.DecimalFormat;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
double PI=3.14159265358979323;
DecimalFormat df=new DecimalFormat("0.0000000");
System.out.println(df.format(PI*n*n));
}
}
3.入门训练 序列求和
序列求和数据规模
注意数据的规模,暴力解决不了问题,int也会爆炸。
import java.text.DecimalFormat;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
long n=sc.nextLong();
System.out.println((1+n)*n/2);
}
}
4.基础练习 时间转换
时间转换注意输出的是printf,不是println这个要字符串拼接的。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int h, m, s;
h = m = s = 0;
if (n / 3600 > 0) {
h = n / 3600;
n = n % 3600;
}
if (n / 60 > 0) {
m = n / 60;
n = n % 60;
}
s = n;
System.out.printf("%d:%d:%d", h, m, s);//注意输出的是printf
}
}
5.基础练习 字符串对比
字符串对比import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a=sc.nextLine();
String b=sc.nextLine();
if(a.length()!=b.length()) {
System.out.println("1");
}else if(a.equals(b)) {
System.out.println("2");
}else if(a.length()==b.length() && a.toLowerCase().equals(b.toLowerCase())) {
System.out.println("3");
}else {
System.out.println("4");
}
}
}
6.基础练习 分解质因数
分解质因数抄来的,好好看思路。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(), b = sc.nextInt();
for (int i = a; i <= b; i++) {
System.out.println(resolvePrime(i));
}
}
public static String resolvePrime(int n) {
StringBuilder sb = new StringBuilder(n + "="); //保存结果字符
int i = 2; // 定义最小素数
while (i <= n) { // 进行辗转相除法
if (n % i == 0) { // 若n能整除i,则i是n的一个因数
sb.append(i + "*");
n /= i; // 同时将 n除以i的值赋给n
i = 2; // 将i重新置为2
} else {
i++; // 若无法整除,则i自增
}
}
//去除最后的一个*
return sb.toString().substring(0, sb.toString().length() - 1);
}
}