第八届蓝桥杯决赛JavaC组真题——详细答案对照(完整版)-2

简介: 第八届蓝桥杯决赛JavaC组真题——详细答案对照(完整版)

标题: 小数第n位

我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。

如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。


本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。


输入:

一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0<a,b,n<1000000000)

输出:

一行3位数字,表示:a除以b,小数后第n位开始的3位数字。


比如:

输入:

1 8 1


程序应该输出:

125


再比如:

输入:

1 8 3


程序应该输出:

500


再比如:

输入:

282866 999000 6


程序应该输出:

914


资源约定:

峰值内存消耗 < 256M

CPU消耗  < 1000ms



请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。


所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码处理。


package action;
import java.util.*;
public class demo {
  public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  int a = sc.nextInt();
  int b = sc.nextInt();
  int len = sc.nextInt();
  sc.close();
  a = a % b;
  String str = "";
  int i = len + 2;
  // 遍历掉大量的无用数据
  for (; i > 10; i -= 7) {
    a = a * 10000000 % b;
    if (a == 0) { // 如果整除则直接跳出
    break;
    }
  }
  for (; i > 0; i--) {
    if (i <= 3) {
    str = str + a * 10 / b; // 最后三位使用字符串保存
    }
    if (a == 0) { // 如果整除则直接跳出
    break;
    }
    a = a * 10 % b;
  }
  while (str.length() < 3) { // 将字符串的长度补到3
    str = str + "0";
  }
  System.out.println(str);
  }
}

image.png

 

标题:分考场

n个人参加某项特殊考试。

为了公平,要求任何两个认识的人不能分在同一个考场。

求是少需要分几个考场才能满足条件。


输入格式:

第一行,一个整数n(1<n<100),表示参加考试的人数。

第二行,一个整数m,表示接下来有m行数据

以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n)  表示第a个人与第b个人认识。


输出格式:

一行一个整数,表示最少分几个考场。


例如:

输入:

5

8

1 2

1 3

1 4

2 3

2 4

2 5

3 4

4 5


程序应该输出:

4


再比如:

输入:

5

10

1 2

1 3

1 4

1 5

2 3

2 4

2 5

3 4

3 5

4 5


则程序应该输出:

5


资源约定:

峰值内存消耗 < 256M

CPU消耗  < 1000ms



请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。


所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码处理。


package action;
import java.util.*;
public class demo {
  public static int n = 0, m = 0, min = 1000;
  public static boolean[][] know;
  public static int[][] kaochang;
  public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  n = sc.nextInt();
  m = sc.nextInt();
  know = new boolean[n + 1][n + 1];
  kaochang = new int[n + 1][n + 1];
  for (int i = 0; i < m; i++) {
    int c = sc.nextInt();
    int d = sc.nextInt();
    know[c][d] = true;
    know[d][c] = true;
  }
  sc.close();
  f(1, 1);
  System.out.println(min);
  }
  public static void f(int a, int b) {// a是考场b是人
  if (b >= n + 1) {
    min = Math.min(a, min);
    return;
  }
  if (a >= min) {
    return;
  }
  A: for (int i = 1; i <= a; i++) {
    int j;
    for (j = 1; j < b; j++) {
    if (kaochang[i][j] != 0) {
      if (know[b][j]) {
      continue A;
      }
    }
    }
    if (j == b) {
    kaochang[i][b] = b;
    f(a, b + 1);
    kaochang[i][b] = 0;
    }
  }
  kaochang[a + 1][b] = b;
  f(a + 1, b + 1);
  kaochang[a + 1][b] = 0;
  }
}

image.png




标题:合根植物

w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。

这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。


如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?


输入格式:

第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。

接下来一行,一个整数k,表示下面还有k行数据(0<k<100000)

接下来k行,第行两个整数a,b,表示编号为a的小格子和编号为b的小格子合根了。


格子的编号一行一行,从上到下,从左到右编号。

比如:5 * 4 的小格子,编号:

1  2  3  4

5  6  7  8

9  10 11 12

13 14 15 16

17 18 19 20


样例输入:

5 4

16

2 3

1 5

5 9

4 8

7 8

9 10

10 11

11 12

10 14

12 16

14 18

17 18

15 19

19 20

9 13

13 17



样例输出:

5


其合根情况参考图[p1.png]


资源约定:

峰值内存消耗 < 256M

CPU消耗  < 2000ms



请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。


所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码处理。


package action;
import java.util.*;
public class demo {
  public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  int n = sc.nextInt();
  int m = sc.nextInt();
  int a, b, c, d;
  int[] shu = new int[m * n + 1];
  int[][] num = new int[n][m];
  int k = sc.nextInt();
  for (int i = 0; i < shu.length; i++) {
    shu[i] = i;
  }
  for (int i = 0; i < k; i++) {
    c = sc.nextInt();
    d = sc.nextInt();
    a = Math.min(c, d);
    b = Math.max(c, d);
    if (shu[b] == b) {
    shu[b] = shu[a];
    } else {
    shu[a] = shu[b];
    }
  }
  int count = 0;
  for (int i = 1; i < shu.length; i++) {
    if (shu[i] == i) {
    count++;
    }
  }
  System.out.println(count);
  }
}

image.png

相关文章
|
2月前
第十四届蓝桥杯集训——JavaC组第十三篇——for循环
第十四届蓝桥杯集训——JavaC组第十三篇——for循环
43 0
|
2月前
|
算法
第十四届蓝桥杯集训——JavaC组第十二篇——while循环(循环四要素)
第十四届蓝桥杯集训——JavaC组第十二篇——while循环(循环四要素)
48 0
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-试题 基础练习 数列排序(四种语言对照)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-试题 基础练习 数列排序(四种语言对照)
31 0
|
2月前
|
Java C语言
第十四届蓝桥杯集训——JavaC组第十四篇——嵌套循环
第十四届蓝桥杯集训——JavaC组第十四篇——嵌套循环
40 0
|
2月前
|
C语言
第十四届蓝桥杯集训——JavaC组第十一篇——switch
第十四届蓝桥杯集训——JavaC组第十一篇——switch
40 0
|
2月前
第十四届蓝桥杯集训——JavaC组第十篇——分支语句
第十四届蓝桥杯集训——JavaC组第十篇——分支语句
38 0
|
2月前
|
算法
第十四届蓝桥杯集训——JavaC组第九篇——三元运算符
第十四届蓝桥杯集训——JavaC组第九篇——三元运算符
35 0
|
2月前
第十四届蓝桥杯集训——JavaC组第九篇——位运算符
第十四届蓝桥杯集训——JavaC组第九篇——位运算符
27 0
|
2月前
第十四届蓝桥杯集训——JavaC组第八篇——进制转换
第十四届蓝桥杯集训——JavaC组第八篇——进制转换
39 0
|
2月前
|
Java 测试技术 C++
第十四届蓝桥杯集训——JavaC组——运算符练习题
第十四届蓝桥杯集训——JavaC组——运算符练习题
50 0