1.结果填空 (满分15分)
2.结果填空 (满分45分)
3.代码填空 (满分30分)
4.程序设计(满分30分)
5.程序设计(满分80分)
6.程序设计(满分100分)

1.标题:海盗分金币

有5个海盗,相约进行一次帆船比赛。

比赛中天气发生突变,他们被冲散了。

恰巧,他们都先后经过途中的一个无名的荒岛,并且每个人都信心满满,觉得自己是第一个经过该岛的人。

第一个人在沙滩上发现了一堆金币。他把金币分成5等份。发现刚好少一个金币。他就从自己口袋拿出一个金币补充进去,然后把属于自己的那份拿走。

第二个到达的人也看到了金币,他也和第一个人一样,把所有金币5等分,发现刚好缺少一个金币,于是自己补进去一个,拿走了属于自己的那份。

第三,第四,第五人的情况一模一样。

等他们到了目的地,都说自己的情况,才恍然大悟,一起去荒岛找金币,然而再也没有找到荒岛。他们都惋惜地说:岛上还有一千多枚金币呢!
    
    请你根据这些信息,推算荒岛上最初有多少金币?

这是一个整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字等)

//

import java.util.Scanner;

public class Main {

    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {

        //int n=sc.nextInt();
long x=0;
for(int i=1000;i<=1999;i++){
x=i;
for(int j=1;j<=5;j++) {
x*=5;
if(x%4!=0) break;
x/=4;
x--;
if(j==5) {
System.out.println(i+" "+x);
}
}
}
} }

海盗分金币

2.标题:六角幻方

把 1 2 3 ... 19 共19个整数排列成六角形状,如下:

* * *
   * * * *
  * * * * *
   * * * * 
    * * *

要求每个直线上的数字之和必须相等。共有15条直线哦!

再给点线索吧!我们预先填好了2个数字,第一行的头两个数字是:15 13,参见图【p1.png】,黄色一行为所求。

请你填写出中间一行的5个数字。数字间用空格分开。

这是一行用空格分开的整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字等)

//9 6 5 2 16

import java.util.Scanner;

public class Main {

    static Scanner sc = new Scanner(System.in);
static int[] a = new int[20];
static int[] b = new int[20]; static int lim() {
if(a[1]+a[2]+a[3]>38) return 0;
if(a[4]+a[5]+a[6]+a[7]>38) return 0;
if(a[8]+a[9]+a[10]+a[11]+a[12]>38) return 0;
if(a[13]+a[14]+a[15]+a[16]>38) return 0;
if(a[17]+a[18]+a[19]>38) return 0;
if(a[8]+a[13]+a[17]>38) return 0;
if(a[4]+a[9]+a[14]+a[18]>38) return 0;
if(a[1]+a[5]+a[10]+a[15]+a[19]>38) return 0;
if(a[2]+a[6]+a[11]+a[16]>38) return 0;
if(a[3]+a[7]+a[12]>38) return 0;
if(a[1]+a[4]+a[8]>38) return 0;
if(a[2]+a[5]+a[9]+a[13]>38) return 0;
if(a[3]+a[6]+a[10]+a[14]+a[17]>38) return 0;
if(a[7]+a[11]+a[15]+a[18]>38) return 0;
if(a[12]+a[16]+a[19]>38) return 0;
return 1;
}
static int key(int k) {
if(k==3) {
if(a[1]+a[2]+a[3]<38) return 0;
}
if(k==7) {
if(a[4]+a[5]+a[6]+a[7]<38) return 0;
}
if(k==12) {
if(a[8]+a[9]+a[10]+a[11]+a[12]<38) return 0;
if(a[3]+a[7]+a[12]<38) return 0;
}
if(k==16) {
if(a[13]+a[14]+a[15]+a[16]<38) return 0;
if(a[2]+a[6]+a[11]+a[16]<38) return 0;
}
if(k==19) {
if(a[17]+a[18]+a[19]<38) return 0;
if(a[1]+a[5]+a[10]+a[15]+a[19]<38) return 0;
if(a[12]+a[16]+a[19]<38) return 0;
}
if(k==18) {
if(a[4]+a[9]+a[14]+a[18]<38) return 0;
if(a[7]+a[11]+a[15]+a[18]<38) return 0;
}
if(k==17) {
if(a[8]+a[13]+a[17]<38) return 0;
if(a[3]+a[6]+a[10]+a[14]+a[17]<38) return 0;
}
if(k==13) {
if(a[2]+a[5]+a[9]+a[13]<38) return 0;
}
if(k==8) {
if(a[1]+a[4]+a[8]<38) return 0;
}
return 1;
}
static void dfs(int s) {
if(s>19) {
for(int i=1;i<=3;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
for(int i=4;i<=7;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
for(int i=8;i<=12;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
for(int i=13;i<=16;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
for(int i=17;i<=19;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
return;
}
for(int k=1;k<=19;k++) {
if(b[k]==1) continue;
a[s]+=k;
if(lim()==1&&key(s)==1) {
b[k]=1;
dfs(s+1);
b[k]=0;
}
a[s]-=k;
}
}
public static void main(String[] args) { //int n=sc.nextInt();
a[1]=15;a[2]=13;
b[15]=1;b[13]=1;
dfs(3);
} }

六角幻方

3.标题:格子放鸡蛋

X星球的母鸡很聪明。它们把蛋直接下在一个 N * N 的格子中,每个格子只能容纳一枚鸡蛋。它们有个习惯,要求:每行,每列,以及每个斜线上都不能有超过2个鸡蛋。如果要满足这些要求,母鸡最多能下多少蛋呢,有多少种摆放方法呢?

下面的程序解决了这个问题,请仔细分析程序逻辑,推断划线处缺少的代码。

public class A
{
static int max = 0;
static int T = 0;
static final int N = 6; // 只能在(r,c) 以及其右,其下放置
static void f(int[][] da, int r, int c)
{
if(r>=N){
int n = count(da);
if(n>max) {
max = n;
T = 0;
}
if(n==max) T++;
return;
} //计算一下步放哪
int r_next = r;
int c_next = c + 1;
if(c_next>=N){
c_next = 0;
r_next++;
} if(____________________){ // 填空位置
da[r][c] = 1;
f(da, r_next, c_next);
} da[r][c] = 0;
f(da, r_next, c_next);
} static int count(int[][] da)
{
int n = 0; for(int i=0; i<da.length; i++)
for(int j=0; j<da[i].length; j++)
if(da[i][j]==1) n++; return n;
} static int spy(int[][] da, int r, int c)
{
int m=0; // 该行
int n=0;
for(int i=0; i<N; i++) if(da[r][i]==1) n++;
if(n>m) m = n; //该列
n=0;
for(int i=0; i<N; i++) if(da[i][c]==1) n++;
if(n>m) m = n; //右斜线
n=0;
for(int i=0; i<N; i++){
if(r-i<0 || c-i<0) break;
if(da[r-i][c-i]==1) n++;
}
for(int i=1; i<N; i++){
if(r+i>=N || c+i>=N) break;
if(da[r+i][c+i]==1) n++;
}
if(n>m) m = n; //左斜线
n=0;
for(int i=0; i<N; i++){
if(r-i<0 || c+i>=N) break;
if(da[r-i][c+i]==1) n++;
}
for(int i=1; i<N; i++){
if(r+i>=N || c-i<0) break;
if(da[r+i][c-i]==1) n++;
}
if(n > m) m = n; return m;
} public static void main(String[] args)
{
int[][] da = new int[N][N]; f(da, 0, 0); System.out.println(max);
System.out.println(T);
}
}

注意:通过浏览器提交答案。只填写缺少的内容,不要填写任何多余的内容(例如:说明性文字或已有符号)。

spy(da,r,c)<2

格子放鸡蛋

4.标题:排列序数

如果用a b c d这4个字母组成一个串,有4!=24种,如果把它们排个序,每个串都对应一个序号:
  abcd  0
  abdc  1
  acbd  2
  acdb  3
  adbc  4
  adcb  5
  bacd  6
  badc  7
  bcad  8
  bcda  9
  bdac  10
  bdca  11
  cabd  12
  cadb  13
  cbad  14
  cbda  15
  cdab  16
  cdba  17
  ...

现在有不多于10个两两不同的小写字母,给出它们组成的串,你能求出该串在所有排列中的序号吗?

【输入格式】
一行,一个串。

【输出格式】
一行,一个整数,表示该串在其字母所有排列生成的串中的序号。注意:最小的序号是0。

例如:
输入:
bdca

程序应该输出:
11

再例如:
输入:
cedab

程序应该输出:
70

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

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

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

import java.util.Scanner;

public class Main {

    static Scanner sc = new Scanner(System.in);
static int[] a = new int[30];
static int[] b = new int[30];
static int[] jc = new int[15]; public static void main(String[] args) { String s=sc.next();
int len=s.length();
for(int i=0;i<len;i++){
a[s.charAt(i)-'a']++;
}
int c=0;
for(int i=0;i<26;i++){
if(a[i]>0){
for(int j=0;j<len;j++){
if(s.charAt(j)==('a'+i)){
c++;
b[j]=c;
break;
}
}
}
}
jc[0]=1;
for(int i=1;i<=10;i++){
jc[i]=jc[i-1]*i;
}
long ans=0;
for(int i=0;i<len;i++){
ans+=(b[i]-1)*jc[len-i-1];
for(int j=i+1;j<len;j++){
if(b[j]>b[i]) b[j]--;
}
}
System.out.println(ans);
}
}

排列序数

5.标题:幂一矩阵

天才少年的邻居 atm 最近学习了线性代数相关的理论,他对“矩阵”这个概念特别感兴趣。矩阵中有个概念叫做幂零矩阵。对于一个方阵 M ,如果存在一个正整数 k 满足 M^k = 0 ,那么 M 就是一个幂零矩阵。(^ 表示乘方)

atm 不满足幂零矩阵,他自己设想了一个幂一矩阵:对于一个方阵 M ,如果存在一个正整数 k 满足 M^k = I ,其中 I 是单位矩阵,那么 M 就是一个幂一矩阵。

atm 特别钟情于这样一种方阵:每行每列有且仅有一个 1 。经过 atm 不断实验,他发现这种矩阵都是幂一矩阵。

现在,他的问题是,给定一个满足以上条件的方阵,他想求最小的 k 是多少。

【输入格式】
第一行一个正整数 n ,表示矩阵大小是 n * n 。
接下来 n 行,每行两个正整数 i j 表示方阵的第 i 行第 j 列为 1。
1 <= i, j <= n 。
行号,列号都从1开始。

【输出格式】
一行。一个正整数,即题目中所说最小的 k 。

【样例输入】
5
3 1
1 2
4 4
2 3
5 5

【样例输出】
3

【数据范围】
对于 30% 的数据满足 n <= 10 
对于 60% 的数据答案不超过 10^18 
对于 100% 的数据满足 n <= 10000

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

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

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

6.标题:供水设施

X星球的居民点很多。Pear决定修建一个浩大的水利工程,以解决他管辖的N个居民点的供水问题。现在一共有N个水塔,同时也有N个居民点,居民点在北侧从1号到N号自西向东排成一排;水塔在南侧也从1号到N号自西向东排成一排。

N条单向输水线(有水泵动力),将水从南侧的水塔引到北侧对应的居民点。

我们不妨将居民点和水塔都看做平面上的点,居民点坐标为(1,K)~(N,K),水塔为(1,0)~(N,0)。

除了N条纵向输水线以外,还有M条单向的横向输水线,连接(Xi,Yi)和(Xi,(Yi)+1)或者(Xi,Yi)和(Xi,(Yi)-1)。前者被称为向右的水路,而后者是向左的。不会有两条水路重叠,即便它们方向不同。

布局的示意图如:【p1.png】所示。

显然,每个水塔的水都可以到达若干个居民点(而不仅仅是对应的那个)。例如上图中,4号水塔可以到达3、4、5、6四个居民点。

现在Pear决定在此基础上,再修建一条横向单项输水线。为了方便考虑,Pear认为这条水路应当是自左向右的,也就是连接了一个点和它右侧的点(例如上图中连接5和6两个纵线的横向水路)。

Pear的目标是,修建了这条水路之后,能有尽可能多对水塔和居民点之间能到达。换句话说,设修建之后第i个水塔能到达Ai个点,你要最大化A1+A2+...+An。

根据定义,这条路必须和X轴平行,但Y坐标不一定要是整数。注意:虽然输入中没有重叠的水路,但是你的方案可以将新修的输水线路与已有的水路重叠。

【输入数据】
    输入第一行包含三个正整数N,M,K,含义如题面所述:N是纵向线数,M横向线数,K是居民点纵坐标。

接下来M行,每行三个整数。前两个正整数Xi Yi表示水路的起点坐标;
    1<=Xi<=N,0<Yi<K。
    接下来一个数0或者1,如果是0表示这条水路向左,否则向右。
    保证水路都是合法的,也就是不会流向没有定义的地方。

【输出数据】
输出一行。是一个正整数,即:题目中要求的最大化的A1+A2+...+An。

【输入样例1】
4 3 2
1 1 1
3 1 0
3 1 1
【输出样例1】
11

【输入样例2】
7 9 4
2 3 0
7 2 0
6 3 1
6 1 0
2 1 1
3 3 1
5 2 0
2 2 1
7 1 0
【输出样例2】
21

【数据范围】
对于20%的数据,N,K<=20,M<=100
对于40%的数据,N,K<=100,M<=1000
对于60%的数据,N,K<=1000,M<=100000
对于100%的数据,N,K<=50000,M<=100000

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

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

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

2014年第五届蓝桥杯国赛试题(JavaA组)的更多相关文章

  1. 2014年第五届蓝桥杯省赛试题(JavaA组)

    1.结果填空 (满分2分)2.结果填空 (满分6分)3.结果填空 (满分7分)4.代码填空 (满分4分)5.代码填空 (满分12分)6.结果填空 (满分12分)7.结果填空 (满分9分)8.程序设计( ...

  2. 2014年第五届蓝桥杯国赛 Log大侠(区间合并+Java递归效率分析)

    1678: Log大侠 java 时间限制: 2 Sec  内存限制: 256 MB提交: 20  解决: 1 题目描述     atm参加了速算训练班,经过刻苦修炼,对以2为底的对数算得飞快,人称L ...

  3. 2015年第六届蓝桥杯国赛试题(JavaA组)

    1.结果填空 (满分15分)2.结果填空 (满分35分)3.代码填空 (满分31分)4.程序设计(满分41分)5.程序设计(满分75分)6.程序设计(满分103分) 1.标题:胡同门牌号 小明家住在一 ...

  4. 2018年第九届蓝桥杯国赛试题(JavaA组)

    1.结果填空 (满分13分)2.结果填空 (满分39分)3.代码填空 (满分27分)4.程序设计(满分45分)5.程序设计(满分71分)6.程序设计(满分105分) 1.标题:三角形面积 已知三角形三 ...

  5. 2017年第八届蓝桥杯国赛试题(JavaA组)

    1.结果填空 (满分19分)2.结果填空 (满分47分)3.代码填空 (满分21分)4.程序设计(满分35分)5.程序设计(满分79分)6.程序设计(满分99分) 1.标题:图书排列 将编号为1~10 ...

  6. 2013年第四届蓝桥杯国赛试题(JavaA组)

    1.结果填空 (满分12分)2.结果填空 (满分15分)3.结果填空 (满分10分)4.程序设计(满分16分)5.程序设计(满分20分)6.程序设计(满分27分) 1.标题:填算式 请看下面的算式: ...

  7. 2016年第七届蓝桥杯国赛试题(JavaA组)

    1.结果填空 (满分19分)2.结果填空 (满分35分)3.代码填空 (满分21分)4.程序设计(满分47分)5.程序设计(满分79分)6.程序设计(满分99分) 1.阶乘位数 9的阶乘等于:3628 ...

  8. 第八届蓝桥杯国赛java B组第三题

    标题:树形显示 对于分类结构可以用树形来形象地表示.比如:文件系统就是典型的例子. 树中的结点具有父子关系.我们在显示的时候,把子项向右缩进(用空格,不是tab),并添加必要的连接线,以使其层次关系更 ...

  9. 第九届蓝桥杯国赛+第二天的第11届acm省赛的总结

    第九届蓝桥杯国赛+第二天的第11届acm省赛的总结 25号坐的去北京的火车,10个小时的火车,然后挤了快两个小时的地铁,最终达到了中国矿业大学旁边的订的房间.12个小时很难受,晕车症状有点严重,吃了快 ...

随机推荐

  1. VMware虚拟机下安装RedHat Linux 9.0

    从这一篇文章开始我和大家一起学习Linux系统.不管是什么样的系统,必须安装上才能谈使用对吧. Linux版本 安装Linux之前需要了解一下Linux系统的安装版本. Linux的版本分为内核版本和 ...

  2. 10分钟看懂, Java NIO 底层原理

    目录 写在前面 1.1. Java IO读写原理 1.1.1. 内核缓冲与进程缓冲区 1.1.2. java IO读写的底层流程 1.2. 四种主要的IO模型 1.3. 同步阻塞IO(Blocking ...

  3. win10+UEFI下u盘安装ubuntu16.04

    本人电脑是华硕,由于要求使用linux所以安装: 1.首先给linux划出一个大分区,感觉最少50G: win10下磁盘管理,在最后的分区中压缩出50g,空间,其他的不用问了,也不用继续分区,一个大的 ...

  4. BZOJ4944: [Noi2017]泳池

    BZOJ4944: [Noi2017]泳池 题目背景 久莲是个爱玩的女孩子. 暑假终于到了,久莲决定请她的朋友们来游泳,她打算先在她家的私人海滩外圈一块长方形的海域作为游泳场. 然而大海里有着各种各样 ...

  5. python cookbook第三版学习笔记六:迭代器与生成器

    假如我们有一个列表 items=[1,2,3].我们要遍历这个列表我们会用下面的方式 For i in items:   Print i 首先介绍几个概念:容器,可迭代对象,迭代器 容器是一种存储数据 ...

  6. [java,maven] 使用 maven 来搭建简单的 netty 开发环境

    大致过程是: 首先, 使用 mvn 命令在指定路径下面创建一套简单的  java 文件包. 然后, 使用 JIdea 导入 maven 项目的方式将创建好的文件包加载到 IDE 环境中.‘ 接下来, ...

  7. Java for LeetCode 095 Unique Binary Search Trees II

    Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...

  8. C#winform的datagridview设置选中行

    this.dataGridView1.CurrentCell = this.dataGridView1[colIndex, rowIndex];this.dataGridView1.BindingCo ...

  9. Matlab图像处理(02)-图像基础

    数据类 Matlab中和IPT中支持的基本数据类型如下: 名称 描述 double 双精度浮点数,范围-10308~10308  8字节 uint8 无符号1字节整数,范围[0, 255] uint1 ...

  10. JavaScript多态

    function Master(){ //给动物喂食 this.feed=function(animal,food){ window.alert(animal.constructor); docume ...