解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论

题目1、阶乘位数

阶乘位数

9的阶乘等于:362880

它的二进制表示为:1011000100110000000

这个数字共有19位。

请你计算,9999 的阶乘的二进制表示一共有多少位?

注意:需要提交的是一个整数,不要填写任何无关内容(比如说明解释等)

答案:118445

import java.math.BigInteger;

public class Main {

    public static void main(String[] args) {
BigInteger result = new BigInteger("1");
for(int i = 1;i <= 9999;i++) {
BigInteger temp = new BigInteger(""+i);
result = result.multiply(temp);
}
long count = 0;
BigInteger a = new BigInteger("2");
while(result.compareTo(BigInteger.ZERO) > 0) {
count++;
result = result.divide(a);
//System.out.println("count = "+count);
}
System.out.println(count);
}
}

题目2、凑平方数

把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的。

比如:0, 36, 5948721

再比如:

1098524736

1, 25, 6390784

0, 4, 289, 15376

等等…

注意,0可以作为独立的数字,但不能作为多位数字的开始。

分组时,必须用完所有的数字,不能重复,不能遗漏。

如果不计较小组内数据的先后顺序,请问有多少种不同的分组方案?

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

答案:300

import java.util.Arrays;
import java.util.HashSet; public class Main {
public static HashSet<String> set = new HashSet<String>(); public void swap(int[] A, int i, int j) {
int temp = A[i];
A[i] = A[j];
A[j] = temp;
} public void dfsAllSort(int[] A, int step) {
if(step == A.length) {
long[] B = new long[A.length];
dfsSqrtNum(A, 0, B, 0);
return;
} else {
for(int i = step;i < A.length;i++) {
swap(A, i, step);
dfsAllSort(A, step + 1);
swap(A, i, step);
}
}
} public void dfsSqrtNum(int[] A, int step, long[] B, int num) {
if(step == A.length) {
StringBuffer s = new StringBuffer("");
long[] arrayA = new long[num];
for(int i = 0;i < num;i++)
arrayA[i] = B[i];
Arrays.sort(arrayA);
for(int i = 0;i < num;i++) {
s.append(arrayA[i]);
if(i != num - 1)
s.append("-");
}
set.add(s.toString());
return;
} if(A[step] == 0) {
B[num] = 0;
dfsSqrtNum(A, step + 1, B, num + 1);
} else {
long sum = 0;
for(int i = step;i < A.length;i++) {
sum = sum * 10 + A[i];
double son = Math.sqrt(sum * 1.0);
long a = (long) son;
if(a == son) {
B[num] = sum;
dfsSqrtNum(A, i + 1, B, num + 1);
}
}
} } public static void main(String[] args) {
Main test = new Main();
int[] A = {0,1,2,3,4,5,6,7,8,9};
test.dfsAllSort(A, 0);
System.out.println(set.size());
}
}

题目3、棋子换位

棋子换位

有n个棋子A,n个棋子B,在棋盘上排成一行。
它们中间隔着一个空位,用“.”表示,比如: AAA.BBB 现在需要所有的A棋子和B棋子交换位置。
移动棋子的规则是:
1. A棋子只能往右边移动,B棋子只能往左边移动。
2. 每个棋子可以移动到相邻的空位。
3. 每个棋子可以跳过相异的一个棋子落入空位(A跳过B或者B跳过A)。 AAA.BBB 可以走法:
移动A ==> AA.ABBB
移动B ==> AAAB.BB 跳走的例子:
AA.ABBB ==> AABA.BB 以下的程序完成了AB换位的功能,请仔细阅读分析源码,填写划线部分缺失的内容。 public class Main
{
static void move(char[] data, int from, int to)
{
data[to] = data[from];
data[from] = '.';
} static boolean valid(char[] data, int k)
{
if(k<0 || k>=data.length) return false;
return true;
} static void f(char[] data)
{
while(true){
boolean tag = false;
for(int i=0; i<data.length; i++){
int dd = 0; // 移动方向
if(data[i]=='.') continue;
if(data[i]=='A') dd = 1;
if(data[i]=='B') dd = -1; if(valid(data, i+dd) && valid(data,i+dd+dd)
&& data[i+dd]!=data[i] && data[i+dd+dd]=='.'){
// 如果能跳...
move(data, i, i+dd+dd);
System.out.println(new String(data));
tag = true;
break;
}
} if(tag) continue; for(int i=0; i<data.length; i++){
int dd = 0; // `移动方向
if(data[i]=='.') continue;
if(data[i]=='A') dd = 1;
if(data[i]=='B') dd = -1; if(valid(data, i+dd) && data[i+dd]=='.'){
// 如果能移动...
if( _____________________ ) continue; //填空位置
move(data, i, i+dd);
System.out.println(new String(data));
tag = true;
break;
}
} if(tag==false) break;
}
} public static void main(String[] args)
{
char[] data = "AAA.BBB".toCharArray();
f(data);
}
} 注意:只提交划线部分缺少的代码,不要复制已有代码或填写任何多余内容。 答案:valid(data,i+dd+dd) && valid(data, i-dd) && data[i-dd] == data[i+dd+dd]

题目4、机器人塔

X星球的机器人表演拉拉队有两种服装,A和B。

他们这次表演的是搭机器人塔。

类似:

     A
B B
A B A
A A B B
B B B A B
A B A B B A

队内的组塔规则是:

A 只能站在 AA 或 BB 的肩上。

B 只能站在 AB 或 BA 的肩上。

你的任务是帮助拉拉队计算一下,在给定A与B的人数时,可以组成多少种花样的塔。

输入一行两个整数 M 和 N,空格分开(0<M,N<500),分别表示A、B的人数,保证人数合理性。

要求输出一个整数,表示可以产生的花样种数。

例如:

用户输入:

1 2

程序应该输出:

3

再例如:

用户输入:

3 3

程序应该输出:

4

资源约定:

峰值内存消耗 < 256M

CPU消耗 < 1000ms

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

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

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

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

import java.util.Scanner;

public class Main {
public static int m, n;
public static int[][] value; //此处用数字1代表A,数字2代表B
public static int len, count = 0; public void check() {
for(int i = len - 2, t = 1;i >= 0;i--, t++)
for(int j = 0;j < len - t;j++) {
if(value[i + 1][j] == value[i + 1][j + 1])
value[i][j] = 1;
else
value[i][j] = 2;
}
int sumA = 0, sumB = 0;
for(int i = 0, t = len - 1;i < len;i++, t--)
for(int j = 0;j < len - t;j++) {
if(value[i][j] == 1)
sumA++;
else if(value[i][j] == 2)
sumB++;
}
if(sumA == m && sumB == n)
count++;
} public void dfs(int step) {
if(step == len) {
check();
return;
} else {
for(int i = 1;i <= 2;i++) {
value[len - 1][step] = i; //确定三角形最底层一行,即可确定整个三角形
dfs(step + 1);
}
}
} public static void main(String[] args) {
Main test = new Main();
Scanner in = new Scanner(System.in);
m = in.nextInt();
n = in.nextInt();
for(int i = 1;i < 100;i++) { //满足三角形规则,可知i层,则(i + 1) * i / 2 = m + n
int a = (i + 1) * i / 2;
if(a == m + n) {
len = i;
value = new int[a][a];
break;
}
}
test.dfs(0);
System.out.println(count);
}
}

第七届蓝桥杯JavaA组国(决)赛部分真题的更多相关文章

  1. 第七届蓝桥杯JavaB组国(决)赛部分真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.愤怒小鸟 题目描述 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米 两火车 (不妨称A和B) 以时速 10米 ...

  2. 第六届蓝桥杯JavaA组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.胡同门牌号 小明家住在一条胡同里.胡同里的门牌号都是连续的正整数,由于历史原因,最小的号码并不是从1开始排的. 有一天小明突然发现了有 ...

  3. 第七届蓝桥杯JavaC组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.平方末尾 能够表示为某个整数的平方的数字称为"平方数" 比如,25,64 虽然无法立即说出某个数是平方数,但经常可 ...

  4. 第六届蓝桥杯JavaB组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.分机号 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位.比如: 751,520, ...

  5. 第六届蓝桥杯JavaC组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.机器人数目 少年宫新近邮购了小机器人配件,共有3类,其中, A类含有:8个轮子,1个传感器 B类含有: 6个轮子,3个传感器 C类含有 ...

  6. 第九届蓝桥杯JavaB组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.三角形面积 已知三角形三个顶点在直角坐标系下的坐标分别为: (2.3, 2.5) (6.4, 3.1) (5.1, 7.2) 求该三角 ...

  7. 第五届蓝桥杯JavaA组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.海盗分金币 有5个海盗,相约进行一次帆船比赛. 比赛中天气发生突变,他们被冲散了. 恰巧,他们都先后经过途中的一个无名的荒岛,并且每个 ...

  8. 第七届蓝桥杯JavaA组省赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.煤球数量 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第 ...

  9. 第四届蓝桥杯JavaB组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜灯谜 题目描述 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字 ...

随机推荐

  1. [hdu5253] 最小生成树,Kruskal

    题意:有n*m个单位的农田,给定每个单位农田地势高低,现在需要灌溉所有农田,如果把水引入相邻的农田里需要的管道长度为两者的高度差.求最少的管道长度花费. 思路:比较明显的最小生成树问题,相邻两点之间连 ...

  2. SpringMvc 你该知道如何在HandlerExceptionResolver中获取Model

    在项目开发中,我们通常通过参数的形式注入Model对象,如: @RequestMapping("/demo") public String demo(Model model) { ...

  3. docker 垃圾回收机制

    docker垃圾回收机制 作者: 张首富 时间: 2019-04-10 个人博客: www.zhangshoufu.com QQ群: 895291458 说明 对于Docker来说,存在镜像/容器/存 ...

  4. 华为Mate8手机优化技巧

    我的华为Mate8手机手机存储(手机内存)32G, 运行内存3G,2016年买的手机,两样数值都偏小,导致使用手机的时候经常卡顿,一天来回清理垃圾.清理内存很多次,要运行微信.QQ等占用运行内存较多的 ...

  5. 【python(deap库)实现】GEAP 遗传算法/遗传编程 genetic programming +

    目录 前言 1.优化问题的定义 单目标优化 多目标优化 2.个体编码 实数编码 二进制编码 序列编码(Permutation encoding) 粒子(Particles) 3 初始种群建立 一般族群 ...

  6. zabbix 自定义指标数据来源

    1.cpu load https://blog.csdn.net/scugxl/article/details/77199403 1)基本含义:运行队列长度,表示当前有多少个正在等待的进程和正在执行的 ...

  7. 就为了一个原子操作,其他CPU核心罢工了

    i++问题 "阿Q赶快回去吧,隔壁二号车间的虎子说我们改了他们的数据,上门来闹事了" 由于老K的突然出现,我不得不提前结束与小黑的交流,赶回了CPU一号车间. 见到我回来,虎子立刻 ...

  8. (数据科学学习手札84)基于geopandas的空间数据分析——空间计算篇(上)

    本文示例代码.数据及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在本系列之前的文章中我们主要讨论了g ...

  9. wordpress评论回复邮件通知功能

    安装插件登录后台——点击“插件”——“安装插件”——按关键字搜索“Comment Reply Notification”——点击“现在安装”安装好后启用插件.如下图所示: 配置Comment Repl ...

  10. 永久激活idea

    申明:本教程 IntelliJ IDEA 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除. idea版本为老版本2018版本,下载地址如下,激活方法和插件在压缩包中 ...