标题:年龄问题

s夫人一向很神秘。这会儿有人问起她的年龄,她想了想说:
“20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍”。

你能算出s夫人现在的年龄吗?

注意,需要提交的是一个整数,不要填写任何多余的内容。

 public static void main(String[] args) {        for(double i=1;i<100;i++) {double t=1.5*i;if((t-20)/(i-20)==2) {System.out.println(i);break;}} }

答案:40

标题:海盗与金币

12名海盗在一个小岛上发现了大量的金币,后统计一共有将近5万枚。
登上小岛是在夜里,天气又不好。由于各种原因,有的海盗偷拿了很多,有的拿了很少。
后来为了“均贫富”,头目提出一个很奇怪的方案:
每名海盗都把自己拿到的金币放在桌上。然后开始一个游戏。
金币最多的海盗要拿出自己的金币来补偿其他人。
补偿的额度为正好使被补偿人的金币数目翻番(即变为原来的2倍)。
游戏要一直进行下去,直到无法完成。
(当金币数最多的不只一个人或最多金币的人持有金币数不够补偿他人的)

游戏就这样紧张地进行了,一直进行了12轮,恰好每人都“放血”一次,
更离奇的是,刚好在第12轮后,每个人的金币数居然都相等了!! 这难道是天意吗?

请你计算,游戏开始前,所有海盗的初始金币数目,从小到大排列,中间有一个空格分开。

答案形如:
8 15 29 58 110 …
当然,这个不是正确答案。

注意:
需要提交的是一行空格分开的整数,不要提交任何多余的内容。
分隔符要用一个西文的空格,不要用其它符号(比如逗号,中文符号等)

import java.util.Scanner;public class Main {public static void main(String[] args) {int [] b =new int [12];//12名海盗for(int i=12;i<50000;i+=12){//枚举金币总数,找到符合答案的for(int j=0;j<12;j++){//将总数除12,便是12轮后均分的结果b[j] = i/12;}dfs(b,11,i);//最后一个是最大的}}public static void dfs(int [] b,int MaxIn,int sum){//b是这12个人手中的金币数,MaxIn是当前金币最多的那个人,sum为总的金币数if(MaxIn<0){//人数为0,找到答案for(int i=11;i>=0;i--){System.out.print(b[i]+" ");}return;}int count = 0;//计算11个非最大金币的海盗的金币数目和for(int i=0;i<12;i++){//12个海盗,进行反推if(i==MaxIn){//i为最大海盗,不进行操作continue;}else{if(b[i]%2!=0){//该海盗金币不能减半,说明答案错误,进行剪枝return;}else{b[i]=b[i]/2;//反推,金币减半count+=b[i];//求和}}}b[MaxIn] = sum-count;//总数减去11个海盗金币数,得到本轮初始时最大海盗的金币数dfs(b,MaxIn-1,sum);}}

标题:全排列

对于某个串,比如:“1234”,求它的所有全排列。
并且要求这些全排列一定要按照字母的升序排列。
对于“1234”,应该输出(一共4!=24行):
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321

下面是实现程序,请仔细分析程序逻辑,并填写划线部分缺少的代码。

// 轮换前k个,再递归处理
import java.util.*;
public class A
{static void permu(char[] data, int cur){if(cur==data.length-1){System.out.println(new String(data));return;}for(int i=cur; i<data.length; i++){char tmp = data[i]; for(int j=i-1; j>=cur; j--) data[j+1] = data[j];data[cur] = tmp;           permu(data, cur+1);            tmp = data[cur]; __________________________________________ ;data[i] = tmp;           }}static void permu(String x){permu(x.toCharArray(),0);}public static void main(String[] args){permu("1234");}
}
for(int j=cur+1; j<=i; j++) data[j-1] = data[j];

标题:约瑟夫环

n 个人的编号是 1~n,如果他们依编号按顺时针排成一个圆圈,从编号是1的人开始顺时针报数。
(报数是从1报起)当报到 k 的时候,这个人就退出游戏圈。下一个人重新从1开始报数。
求最后剩下的人的编号。这就是著名的约瑟夫环问题。

本题目就是已知 n,k 的情况下,求最后剩下的人的编号。

题目的输入是一行,2个空格分开的整数n, k
要求输出一个整数,表示最后剩下的人的编号。

约定:0 < n,k < 1百万

例如输入:
10 3

程序应该输出:
4

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

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

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

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan=new Scanner(System.in);int n=scan.nextInt();int k=scan.nextInt();int p=0;for(int i=2;i<=n;i++){p=(p+k)%i;}System.out.println(p+1);}}

标题:交换次数

IT产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称BAT)在某海滩进行招聘活动。
招聘部门一字排开。由于是自由抢占席位,三大公司的席位随机交错在一起,形如:
ABABTATT,这使得应聘者十分别扭。
于是,管理部门要求招聘方进行必要的交换位置,使得每个集团的席位都挨在一起。即最后形如:
BBAAATTT 这样的形状,当然,也可能是:
AAABBTTT 等。

现在,假设每次只能交换2个席位,并且知道现在的席位分布,
你的任务是计算:要使每个集团的招聘席位都挨在一起需要至少进行多少次交换动作。

输入是一行n个字符(只含有字母B、A或T),表示现在的席位分布。
输出是一个整数,表示至少交换次数。

比如,输入:
TABTABBTTTT

程序应该输出:
3

再比如,输入:
TTAAABB

程序应该输出:
0

我们约定,输入字符串的长度n 不大于10万

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

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

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

import java.util.HashMap;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String string = scanner.next();HashMap<Character, Integer> stringmap = new HashMap<Character, Integer>();// 统计ABT三个字母的次数for (int i = 0; i < string.length(); i++) {char charAt = string.charAt(i);if (stringmap.containsKey(charAt)) {stringmap.put(charAt, stringmap.get(charAt) + 1);} else {stringmap.put(charAt, 1);}}char[] carr = { 'A', 'B', 'T' };for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {for (int j2 = 0; j2 < 3; j2++) {if (i != j && i != j2 && j != j2) {// ABT全排列有6种方式// s1表示第一个字母长度的字符串,s2表示第二个字母长度的字符串,s3表示第三个字母长度的字符串// c1、c2、c3表示字母的排列方式,如排列方式为BAT的话,则c1 = 'B', c2 = 'A', c3 = 'T'String s1 = string.substring(0, stringmap.get(carr[i]));String s2 = string.substring(s1.length(), s1.length() + stringmap.get(carr[j]));cal(s1, s2, carr[i], carr[j], carr[j2]);}}}}System.out.println(result);}static int result = Integer.MAX_VALUE;private static void cal(String s1, String s2, char c1, char c2, char c3) {// 统计s1中字母的个数HashMap<Character, Integer> map1 = new HashMap<Character, Integer>();map1.put(c1, 0);map1.put(c2, 0);map1.put(c3, 0);for (int i = 0; i < s1.length(); i++) {char charAt = s1.charAt(i);map1.put(charAt, map1.get(charAt) + 1);}// 统计s2中字母的个数HashMap<Character, Integer> map2 = new HashMap<Character, Integer>();map2.put(c1, 0);map2.put(c2, 0);map2.put(c3, 0);for (int i = 0; i < s2.length(); i++) {char charAt = s2.charAt(i);map2.put(charAt, map2.get(charAt) + 1);}// 总需交换次数为s1.length()-s1(c1)+s2.length()-s2(c2)-Math.min(s2(c1),s1(c2))// 第一字母交换次数+第二字母交换次数-第二字母刚好在第一字母长度内的个数与第一字母刚好在第二字母长度内的个数的最小值int sum = s1.length() - map1.get(c1) + s2.length() - map2.get(c2) - Math.min(map1.get(c2), map2.get(c1));result = Math.min(sum, result);}
}

标题:自描述序列

小明在研究一个序列,叫Golomb自描述序列,不妨将其记作{G(n)}。这个序列有2个很有趣的性质:

  1. 对于任意正整数n,n在整个序列中恰好出现G(n)次。
  2. 这个序列是不下降的。

以下是{G(n)}的前几项:

n 1 2 3 4 5 6 7 8 9 10 11 12 13
G(n) 1 2 2 3 3 4 4 4 5 5 5 6 6

给定一个整数n,你能帮小明算出G(n)的值吗?

输入

一个整数n。

对于30%的数据,1 <= n <= 1000000
对于70%的数据,1 <= n <= 1000000000
对于100%的数据,1 <= n <= 2000000000000000

输出

一个整数G(n)

【样例输入】
13

【样例输出】
6

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

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

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

import java.util.Scanner;/*** @Author zhengwei* @Date 2021/5/22 10:15 AM* @Version 1.0** 70分解法,受限于内存限制,f数组不能开太大,意味着i=G(x)不够大,那么反函数求得的x也就不够大*/
public class _6自描述序列 {static final int N = (int) 3e7;// G[i]的最大值static long f[] = new long[N];//即f(i)static long n;public static void main(String[] args) {System.out.println(Integer.MAX_VALUE);Scanner sc = new Scanner(System.in);initF();while (true) {n = sc.nextLong();for (int i = 0; i < N; i++) {if (n <= f[i]) {System.out.println(i);break;}}}}private static void initF() {f[1] = 1;int l = 1;for (int i = 1; i < N; i++) {//求f(i)if (i > f[l]) l++;f[i] = f[i - 1] + l;}}
}

2018第九届蓝桥杯-决赛-Java大学-C组相关推荐

  1. 2019第十届蓝桥杯-决赛-Java大学-C组

    试题 A: 奇数倍数 本题总分: 5 分 [问题描述] 请你找到最小的整数 X 同时满足: • X 是 2019 的整倍数 • X 的每一位数字都是奇数 [答案提交] 这是一道结果填空的题,你只需要算 ...

  2. 2018第九届蓝桥杯大赛软件类B组C/C++省赛题解

    2018第九届蓝桥杯大赛软件类B组C/C++省赛目录 试题 A:第几天(结果填空) 试题 B:明码(结果填空) 试题 C:乘积尾0(结果填空) 试题 D:测试次数(结果填空) 试题 E:快速排序(结果 ...

  3. 2016年第七届蓝桥杯决赛Java本科B组试题解析

    第一题  愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米 两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车, ...

  4. 三阶幻方java解法_蓝桥杯决赛 Java大学B组 第二题 反幻方

    题目 反幻方 我国古籍很早就记载着 2 9 4 7 5 3 6 1 8 这是一个三阶幻方.每行每列以及对角线上的数字相加都相等. 下面考虑一个相反的问题. 可不可以用 1~9 的数字填入九宫格. 使得 ...

  5. 2020第十一届蓝桥杯-决赛-Java大学-C组

    试题 A: 美丽的 2 本题总分:5 分 [问题描述] 小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴. 他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中 包含数字 ...

  6. 2018第九届蓝桥杯JavaB组省赛真题及详解

    2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...

  7. 7.python解答2018年第九届蓝桥杯省赛C++A组 分数

    7.python解答2018年第九届蓝桥杯省赛C++A组 分数 标题:分数 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + - 每项是前一项的一半,如果一共有20项,求这个和是多少,结果 ...

  8. 第九届蓝桥杯真题解析JavaC组

    第九届蓝桥杯真题解析JavaC组 文章目录 ***第九届蓝桥杯真题解析JavaC组*** 前言 A.哪天回家 B.猴子分香蕉 C.字母阵列 D.第几个幸运数 E.书号验证 F.打印大X G.缩位求和 ...

  9. [第九届蓝桥杯省赛C++B组]明码

    题目来源:第九届蓝桥杯省赛C++B组 算法标签:位运算 题目描述:明码 汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛. 16点阵的字库把每个汉字看成是16x16个像素信息.并把这些 ...

最新文章

  1. TSQL 聚合函数忽略NULL值
  2. oracle数据库impdp导入dmp文件功能演示,imp导入IMP-00038: Could not convert to environment character sets handle问题解决
  3. 笔记-项目采购管理-复习要点
  4. java编译命令 Linux,通过命令行在linux中编译Java类
  5. Spring分页实现PageImplT类
  6. 剑指offer48-最长不含重复字符的子字符串(双指针经典)
  7. 掘金后端 mysql优化_vue服务端渲染项目(ssr)仿掘金、后台页面是react spa、服务层nodejs、koa、mysql编写的一套多权限内容管理系统...
  8. 主进程退出后子进程还会存在吗?_[docker]从一个实例,一窥docker进程管理
  9. c语言运行程序没有,这个程序怎么运行?为什么显示没有exe??
  10. ce 修改 java游戏_CE6.4.3修改器加强版 CE加强版 可过NP的和众多游戏的CE修改器 - 下载 - 搜珍网...
  11. Jmeter在Linux下的运行测试
  12. 时钟周期、机器周期、指令周期的概念及三者之间的关系;定时器及计数器
  13. JSP页面中用绝对路径显示图片
  14. html用js生成二维码
  15. 租房“免押金”大面积落地,年底租房人群迎来一点甜
  16. Unity基础(二)---立体声道
  17. matlab矩阵创建
  18. 做空不再瞻前顾后!CoinBene满币USDT永续合约实盘上线(1)
  19. 【躲不过的Java “锁事”】一文扫除对Java各种锁的困扰!
  20. 如何从零到一打造量化交易系统

热门文章

  1. python pandas包,Python的常用包pandas,numpy
  2. linux内核去掉pty,Linux tty pty pts观念区别
  3. 基于音频指纹技术的微信“摇一摇搜歌”和QQ音乐“听歌识曲”
  4. 2013年阿里巴巴实习生招聘笔试题目及解答
  5. OSChina 周五乱弹 —— 性感海星在线翘臀
  6. T(n) = 25T(n/5)+n^2的时间复杂度(转)
  7. 利用Python绘制一个爱心
  8. android开发 dts、各种接口porting
  9. 投研报告 - Polkadex(PDEX
  10. 高通Android系列随身WIFI强行开启adb,关闭商家远程控制