刷题日记【第七篇】-笔试必刷题【跳石板+参数解析+计算日期到天数转换+幸运的袋子】

刷题日记【第七篇】

  • 选择题模块
    • 1负责数据库中查询操作的数据库语言( C)
    • 2定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA )(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C ( C#,Cn,P# )(其属性分别为课程号、课程名、先修课); SC ( S#,C#,G) (其属性分别为学号、课程号和成绩),则该关系为( A )
  • 编程题模块
    • 跳石板
    • 参数分析
    • 计算日期到天的天数
    • 幸运的袋子

选择题模块

1负责数据库中查询操作的数据库语言( C)

A 数据定义语言
B 数据管理语言
C 数据操纵语言
D 数据控制语言

数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整
性、安全性的定义与检查以及并发控制、故障恢复等功能。

2定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA )(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C ( C#,Cn,P# )(其属性分别为课程号、课程名、先修课); SC ( S#,C#,G) (其属性分别为学号、课程号和成绩),则该关系为( A )

A 第二范式
B 第一范式
C 第三范式
D BCNF范式

刷题日记【第七篇】-笔试必刷题【跳石板+参数解析+计算日期到天数转换+幸运的袋子】_第1张图片

编程题模块

跳石板

题目分析
刷题日记【第七篇】-笔试必刷题【跳石板+参数解析+计算日期到天数转换+幸运的袋子】_第2张图片
具体代码

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int N = in.nextInt();
            int M = in.nextInt();
            int[] ret = new int[M + 1];
            for (int i = 0; i <= M; i++) {
                //数组初始化
                ret[i] = Integer.MAX_VALUE;
            }
            ret[N] = 0;
            for (int i = N; i < M; i++) {
                if (ret[i] == Integer.MAX_VALUE) {
                    //表示小易不会到达这里
                    continue;
                }
                List<Integer> n = div(i);//求约数存到n中
                for (int j : n) {
                    if ( i + j <= M) {
                        ret[i + j] = Math.min(ret[i + j], ret[i] + 1);
                        //存最小值,最小步数
                    }
                }
            }
            if (ret[M] == Integer.MAX_VALUE) {
                //表示到达不了
                System.out.println(-1);
            } else {
                System.out.println(ret[M]);
            }

        }
    }

    public static List<Integer> div(int n) {
        List<Integer> list = new ArrayList<>();
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                list.add(i);
                if (n / i != i) {
                    list.add(n / i);
                }
            }
        }
        return list;
    }
}

思路还是理不清楚的可以看下面这张图
刷题日记【第七篇】-笔试必刷题【跳石板+参数解析+计算日期到天数转换+幸运的袋子】_第3张图片

参数分析

题目分析
刷题日记【第七篇】-笔试必刷题【跳石板+参数解析+计算日期到天数转换+幸运的袋子】_第4张图片
具体代码

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int count = 0;
        //计算参数的个数
        for(int i=0;i<str.length();i++){
            //遇到双引号的时候一直遍历,
            //当遇到第二个双引号的时候说明双引号中的参数遍历完了
            if(str.charAt(i)=='"'){
                do{
                    i++;
                }while(str.charAt(i)!='"');
            }
            //碰到双引号以外的空格count++
            if(str.charAt(i)==' '){
                count++;
            }
        }
        // 空格数+1
        System.out.println(count+1);

        //输出每个参数
        int flag = 1;
        for(int i =0;i<str.length();i++){
            //当碰到第一个双引号的时候flag变为0,碰到第二个双引号的时候flag变为1
            //说明在flag==0的时候,一直遍历的是双引号中的参数
            if(str.charAt(i)=='"'){
                flag^=1;
            }
            //除了双引号中的空格 和 双引号 其他字符均输出
            if(str.charAt(i)!=' '&& str.charAt(i)!='"'){
                System.out.print(str.charAt(i));
            }
            //双引号里面的空格要输出
            if(str.charAt(i)==' '&& flag==0){
                System.out.print(str.charAt(i));
            }
            //碰到双引号一外的空格需要换行
            if(str.charAt(i)==' '&&flag==1){
                System.out.println();
            }
        }
    }
}

计算日期到天的天数

题目分析
刷题日记【第七篇】-笔试必刷题【跳石板+参数解析+计算日期到天数转换+幸运的袋子】_第5张图片
具体代码

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int y = in.nextInt();
            int m = in.nextInt();
            int d = in.nextInt();
            if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
                int[] arr = new int[] {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
                for (int i = 0; i < m - 1; i++) {
                    d = d + arr[i];
                }
                System.out.println(d);
            } else {
                int[] arr = new int[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
                for (int i = 0; i < m - 1; i++) {
                    d = d + arr[i];
                }
                System.out.println(d);


            }
        }
    }
}

幸运的袋子

题目分析
刷题日记【第七篇】-笔试必刷题【跳石板+参数解析+计算日期到天数转换+幸运的袋子】_第6张图片
具体代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
            int n =scan .nextInt();
            int[] a=new int[n];
            for(int i = 0; i < n; i++) {
                a[i] = scan.nextInt();
            } 
            Arrays.sort(a);
            int num = count(a, n, 0, 0, 1);
            System.out.println(num);

    } 
    public static int count(int[] a,int n,int pos,int sum,int multi){
        int count = 0;
        for(int i = pos; i < n; i++) {
            sum += a[i];
            multi *= a[i];
            if(sum > multi) {
                count = count + 1 + count(a, n, i + 1, sum, multi);
            }else if(a[i] == 1) {
                count = count + count(a, n, i + 1, sum, multi);
            }else{
                break;
            } 
            sum = sum - a[i];
            multi = multi / a[i];
            while(i < n - 1 && a[i] == a[i+1]) {
                i++;
            }
        } 
        return count;
    }
}

你可能感兴趣的:(刷题日记,java,开发语言)