算法笔记_215:第六届蓝桥杯软件类校赛部分真题(Java语言B组)

目录

1 题目一

2 题目二

3 题目三

前言:以下代码仅供参考,若有错误欢迎指正哦~


1 题目一

java中提供了对正则表达式的支持。
有的时候,恰当地使用正则,可以让我们的工作事半功倍!

如下代码用来检验一个四则运算式中数据项的数目,请填写划线部分缺少的代码。

注意:只填写缺少代码,不要写任何多余内容,例如,已有的双引号。

public class A
{
    public static int f(String s)
    {
        return s.split("________________").length;
    }

    public static void main(String[] args)
    {
        System.out.println(f("12+35*5-2*18/9-3")); //7
        System.out.println(f("354*12+3-14/7*6")); //6
    }
}

答案:[^0-9]

2 题目二

1/1 + 1/2 + 1/3 + 1/4 + ... 在数学上称为调和级数。

它是发散的,也就是说,只要加上足够多的项,就可以得到任意大的数字。

但是,它发散的很慢:

前1项和达到 1.0
前4项和才超过 2.0
前83项的和才超过 5.0

那么,请你计算一下,要加多少项,才能使得和达到或超过 15.0 呢?

请填写这个整数。

注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。

答案:1835421
 1 public class Main {
 2
 3     public static void main(String[] args) {
 4         double result = 0;
 5         for(int i = 1;i < 10000000;i++) {
 6             result = result + 1.0 / i;
 7             if(result >= 15.0) {
 8                 System.out.println(i);
 9                 System.out.println("result = "+result);
10                 break;
11             }
12         }
13     }
14
15 }

3 题目三

G将军有一支训练有素的军队,这个军队除开G将军外,每名士兵都有一个直接上级(可能是其他士兵,也可能是G将军)。现在G将军将接受一个特别的任务,需要派遣一部分士兵(至少一个)组成一个敢死队,为了增加敢死队队员的独立性,要求如果一名士兵在敢死队中,他的直接上级不能在敢死队中。
请问,G将军有多少种派出敢死队的方法。注意,G将军也可以作为一个士兵进入敢死队。
输入格式
输入的第一行包含一个整数n,表示包括G将军在内的军队的人数。军队的士兵从1至n编号,G将军编号为1。
接下来n-1个数,分别表示编号为2, 3, ..., n的士兵的直接上级编号,编号i的士兵的直接上级的编号小于i。
输出格式
输出一个整数,表示派出敢死队的方案数。由于数目可能很大,你只需要输出这个数除10007的余数即可。
样例输入1
3
1 1
样例输出1
4
样例说明
这四种方式分别是:
1. 选1;
2. 选2;
3. 选3;
4. 选2, 3。
样例输入2
7
1 1 2 2 3 3
样例输出2
40

数据规模与约定
对于20%的数据,n ≤ 20;
对于40%的数据,n ≤ 100;
对于100%的数据,1 ≤ n ≤ 100000。

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 2000ms

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

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

参考资料: 蓝桥杯 - G将军(树)

 1 import java.util.ArrayList;
 2 import java.util.Scanner;
 3
 4 public class Main {
 5     public static int n;
 6     public static int MOD = 10007;
 7     public static ArrayList<Integer>[] list;
 8     public static long[][] dp;
 9
10     public void dfs(int root) {
11         dp[root][0] = 1;
12         dp[root][1] = 1;
13         for(int i = 0;i < list[root].size();i++) {
14             int child = list[root].get(i);
15             dfs(child);
16             dp[root][0] = dp[root][0] * (dp[child][0] + dp[child][1]) % MOD;
17             dp[root][1] = dp[root][1] * dp[child][0] % MOD;
18         }
19     }
20
21     @SuppressWarnings("unchecked")
22     public static void main(String[] args) {
23         Main test = new Main();
24         Scanner in = new Scanner(System.in);
25         n = in.nextInt();
26         list = new ArrayList[n + 1];
27         for(int i = 1;i <= n;i++)
28             list[i] = new ArrayList<Integer>();
29         for(int i = 2;i <= n;i++) {
30             int father = in.nextInt();
31             list[father].add(i);
32         }
33         dp = new long[n + 1][2];
34         test.dfs(1);
35         long result = (dp[1][0] + dp[1][1] - 1) % MOD;
36         System.out.println(result);
37     }
38 }
时间: 2024-11-14 23:41:41

算法笔记_215:第六届蓝桥杯软件类校赛部分真题(Java语言B组)的相关文章

算法笔记_216:第六届蓝桥杯软件类校赛部分真题(Java语言C组)

目录 1 题目一 2 题目二 3 题目三 4 题目四 5 题目五 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 二项式的系数规律,我国数学家很早就发现了. 如[图1.png],我国南宋数学家杨辉1261年所著的<详解九章算法>一书里就出现了. 其排列规律: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 如下的程序,用来建立N行的杨辉三角形.请填写划线部分缺少的代码.

算法笔记_214:第六届蓝桥杯软件类校赛真题(Java语言A组)

目录 1 题目一 2 题目二 3 题目三 4 题目四 5 题目五 6 题目六 7 题目七 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 一个串的子串是指该串的一个连续的局部.如果不要求连续,则可称为它的子序列. 比如对串: "abcdefg" 而言,"ab","abd","bdef" 等都是它的子序列. 特别地,一个串本身,以及空串也是它的子序列. 对两个串而言,可以有许多的共同的子序列,我们关心的是:它们所共同拥

算法笔记_208:第六届蓝桥杯软件类决赛真题(Java语言A组)

目录 1 胡同门牌号 2 四阶幻方 3 显示二叉树 4 穿越雷区 5 切开字符串 6 铺瓷砖   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 胡同门牌号 标题:胡同门牌号 小明家住在一条胡同里.胡同里的门牌号都是连续的正整数,由于历史原因,最小的号码并不是从1开始排的. 有一天小明突然发现了有趣的事情: 如果除去小明家不算,胡同里的其它门牌号加起来,刚好是100! 并且,小明家的门牌号刚好等于胡同里其它住户的个数! 请你根据这些信息,推算小明家的门牌号是多少? 请提交该整数,不要填写任何多

算法笔记_212:第七届蓝桥杯软件类决赛真题(Java语言B组)

目录 1 愤怒小鸟 2 反幻方 3 打靶 4 路径之谜 5 碱基 6 圆圈舞 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 愤怒小鸟 愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米 两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车, 然后返回去撞A车,再返回去撞B车,如此往复.... 两火车在相距1米处停车. 问:这期间愤怒的小鸟撞 B 车多少次? 注意:需要提交的是一个整数(表示撞B车的次数),不要

算法笔记_211:第七届蓝桥杯软件类决赛部分真题(Java语言A组)

目录 1 阶乘位数 2 凑平方数 3 棋子换位 4 机器人塔 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 阶乘位数 阶乘位数 9的阶乘等于:362880 它的二进制表示为:1011000100110000000 这个数字共有19位. 请你计算,9999 的阶乘的二进制表示一共有多少位? 注意:需要提交的是一个整数,不要填写任何无关内容(比如说明解释等) 答案:118445 1 import java.math.BigInteger; 2 3 public class Main { 4 5

算法笔记_213:第七届蓝桥杯软件类决赛部分真题(Java语言C组)

目录 1 平方末尾 2 七星填数 3 打印数字 4 赢球票 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 平方末尾 平方末尾 能够表示为某个整数的平方的数字称为"平方数" 比如,25,64 虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数. 因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个. 所以,4325435332必然不是平方数. 如果给你一个2位或2位以上的数字,你能根据末位的两位来断定它不是平方数吗? 请计算一下,一个2位以上

算法笔记_206:第五届蓝桥杯软件类决赛真题(Java语言A组)

目录 1 海盗分金币 2 六角幻方 3 格子放鸡蛋 4 排列序数 5 幂一矩阵 6 供水设施   1 海盗分金币 有5个海盗,相约进行一次帆船比赛. 比赛中天气发生突变,他们被冲散了. 恰巧,他们都先后经过途中的一个无名的荒岛,并且每个人都信心满满,觉得自己是第一个经过该岛的人. 第一个人在沙滩上发现了一堆金币.他把金币分成5等份.发现刚好少一个金币.他就从自己口袋拿出一个金币补充进去,然后把属于自己的那份拿走. 第二个到达的人也看到了金币,他也和第一个人一样,把所有金币5等分,发现刚好缺少一个

第六届蓝桥杯大赛个人赛省赛(软件类)C++A组 解题报告

[第一题] 方程整数解 方程: a^2 + b^2 + c^2 = 1000 (或参见[图1.jpg]) 这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解. 你能算出另一组合适的解吗? 请填写该解中最小的数字. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. [答案]:暴力算出另一种解为 10 18 24 ,所以最小的数为10 [第二题] 星系炸弹 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸.

第六届蓝桥杯大赛个人赛省赛(软件类) Java 大学B组

好久没更新过博客了,就从蓝桥杯省赛开始更新吧. 第一题: 三角形面积 如图1所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字. 解题分析:直接计算,8x8-(8x4)/2-4x6/2-8x2/2=28,没啥说的 第二题: 立方变自身 观察下面的现象,某个数字的立方,按位累加仍然等于自身. 1^3 = 1 8^3  = 512    5+1+2=8 17^3 = 4913   4+9+1+3=17 ... 请你计算包括1