蓝桥杯算法题练习

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);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读