2018 java蓝桥杯校赛题目

1.【问题描述】

100 可以表示为带分数的形式:100 = 3 + 69258 / 714
还可以表示为:100 = 82 + 3546 / 197
注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。
类似这样的带分数,100 有 11 种表示法。
题目要求:
从标准输入读入一个正整数N (N<1000*1000)
程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
注意:不要求输出每个表示,只统计有多少表示法!
样例输入:
100
样例输出:
11
样例输入:
105
样例输出:
6
这题使用排列组合出每种数字顺序,然后对每组数字截出所有可能出现的3段 a1,a2,a3 ,只要满足a1 + a2 / a3 == N ,就满足条件

  

package 蓝桥杯校赛2018;import java.util.Scanner;public class A {static int[] t = new int[10];static int[] a = new int[10];static int num;static int count;public static void main(String[] args) {Scanner in = new Scanner(System.in);num = in.nextInt();f(1);System.out.println(count);}//获取数组中一段拼接成数字static double get(int c, int d) {int result = a[c];for (int i = c + 1; i <= d; i++) {result = result * 10 + a[i];}return result;}//判断是否满足 a1 + a2 / a3 == Nstatic void is() {for (int i = 1; i < 8; i++) {for (int j = 1; j + i < 9; j++) {//System.out.println(1 + "," + i + " " + (i + 1) + "," + (i + j) + " " + (i + j + 1) + "," + 9);//System.out.println(get(1, i) + " " + get(i + 1, i + j) + " " + get(i + j + 1, 9));if(get(1, i) +  get(i + 1, i + j) / get(i + j + 1, 9) == num) {//System.out.println(get(1, i) + " " + get(i + 1, i + j) + " " + get(i + j + 1, 9));count++;}}}}//这里dfs搜索出数字所有排列顺序static void f(int n) {if (n == 10) {//System.out.println(Arrays.toString(a));is();return;}for (int i = 1; i < 10; i++) {if (t[i] == 0) {t[i] = 1;a[n] = i;f(n + 1);t[i] = 0;}}}}

 

2.【问题描述】

如果用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
这题有点坑,10!= 3628800 ,如果直接排列组合出每种情况,那肯定会超时。就用案例 bdca ,题目有一个暗示,4!=24,那么我们可以把这24种情况分成4份,每份6个:
第0份abcd  0abdc  1acbd  2acdb  3adbc  4adcb  5
第1份bacd  6badc  7bcad  8bcda  9bdac  10bdca  11
第2份cabd  12cadb  13cbad  14cbda  15cdab  16cdba  17
第3份...
b代表了第1份,去掉已经找过的b,剩下dca,3!=6,分成3份,每份2个,0acd  6adc  7
1cad  8cda  9
2dac  10dca  11
确定了d在第2份,同样再找到ca,2!=2,分成2份,每份1个,0ac  10
1ca  11
直接就可以确定c在第1份中,然后输出位置11

  

package 蓝桥杯校赛2018;import java.util.Arrays;
import java.util.Scanner;public class B {static String s = "abcdefghij";static int[] a = new int[11];static int[] t = new int[11];public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println(jc(10));s = in.nextLine();int slen = s.length();int start = 0, end = slen;for (int i = 0; i < slen - 1; i++) {int len = 0;char[] ca = s.toCharArray();char[] temp = Arrays.copyOf(ca, ca.length);Arrays.sort(temp);for (int j = 0, k = 0; j < ca.length; j++) {t[temp[j] - 'a'] = k++;}for (char c : ca) {a[len++] = t[c - 'a'];}end = jc(len);int size = end / len;end = start + (a[0] + 1) * size - 1;start += (a[0] * size);len--;s = new String(ca, 1, ca.length - 1);}System.out.println(start);}public static int jc(int n) {if (n == 1) {return 1;}return n * jc(n - 1);}}

 

问题描述
X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3...
当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排号宽度为6时,开始情形如下:
1  2  3  4  5  6
12 11 10 9  8  7
13 14 15 .....
我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)
输入为3个整数w m n,空格分开,都在1到10000范围内
要求输出一个整数,表示m n 两楼间最短移动距离。
样例输入:
6 8 2
样例输出:
4
先求出竖直高度y1,y2,根据y1,y2可以判断是否同序或者逆序,
如果n,m的是同序的话,求出他们水平位置x1,x2,然后相减即可
如果n,m是逆序的话,先计算出其中一层竖直对称位置m1,例如题目中:1对应6,2对应5,3对应4,然后再求出n,m1的水平位置,再相减

  

package 蓝桥杯校赛2018;import java.util.Scanner;public class C {public static void main(String[] args) {int k = 4, n = 7, m = 20;Scanner in = new Scanner(System.in);k = in.nextInt();n = in.nextInt();m = in.nextInt();n--;m--;int y1 = n / k;int y2 = m / k;if (y1 > y2) {int t = y1;y1 = y2;y2 = t;}if ((y2 - y1) % 2 == 0) { // 在同序层上int x1 = n % k;int x2 = m % k;if (x1 > x2) {int t = x1;x1 = x2;x2 = t;}System.out.println((y2 - y1) + (x2 - x1));} else { // 在逆序层上int sum = (m / k + 1) * k - 1 + (m / k) * k;int x1 = n % k;int x2 = (sum - m) % k;if (x1 > x2) {int t = x1;x1 = x2;x2 = t;}System.out.println((y2 - y1) + (x2 - x1));}}}

描述

哥德巴赫猜想认为“每一个大于2的偶数,都能表示成两个质数之和”。

给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗?

输入

一个偶数N(4 <= N <= 1000000)

输出

输出P和Q。如果有多组解,输出P最小的一组。

样例输入

10

样例输出

3 7
直接使用线性素数筛选,然后判判断即可

  

package 蓝桥杯校赛2018;import java.util.Scanner;public class D {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n;n = in.nextInt();boolean[] prime = new boolean[n + 1];for (int i = 2; i <= n; i++) {prime[i] = true;}for (int i = 2; i <= n; i++) {if (prime[i]) {for (int j = i + i; j <= n; j += i) {prime[j] = false;}}}for(int i = 0;i <= n;i++) {if(prime[i] && prime[n - i]) {System.out.println(i + " " + (n - i));break;}}}
}

 

 

描述

小Hi参加了一场大型马拉松运动会,他突然发现面前有一位参赛者背后的号码竟然和自己一样,也是666。仔细一看,原来那位参赛者把自己号码帖反(旋转180度)了,结果号码999看上去变成了号码666。  

小Hi知道这次马拉松一共有N名参赛者,号码依次是1~N。你能找出所有可能因为贴反而产生歧义的号码吗?  

一个号码K可能产生歧义当且仅当反转之后的号码是合法的数字K',并且满足1 ≤ K' ≤ N且K' ≠ K。  

例如:

3没有歧义,因为贴反之后不是合法的数字。  

100没有歧义,因为001以0开头,不是合法号码。  

101也没有歧义,因为贴反之后还是101本身。  

假设N=10000000,则1025689有歧义,因为贴反之后变成6895201。如果N=2000000,则1025689没有歧义,因为6895201大于N。

输入

一个整数N。(1 ≤ N ≤ 100000)

输出

从小到大输出1~N之间所有有歧义的号码。每个号码一行。

样例输入
10
样例输出
6
9

 

根据颠倒数字打表-->数字拆分-->使用表合并颠倒后的数字-->比较是否相等

  

package 蓝桥杯校赛2018;import java.util.Arrays;public class E {static int n = 100;static int k;static int[] r = new int[] { 0, 1, 2, -1, -1, 5, 9, -1, 8, 6 };public static void main(String[] args) {for (int i = 1; i <= n; i++) {int[] na = split(i);// System.out.println(Arrays.toString(na));if (na[na.length - 1] == 0) { // 首位为0continue;}int j;int m = 0;for (j = na.length - 1; j >= 0; j--) {if (r[na[j]] == -1) {break;}m = m * 10 + r[na[j]];}if (j == -1 && m != i) {System.out.println(i);}}}public static int length(int n) {int len = 0;while (n != 0) {n /= 10;len++;}return len;}public static int[] split(int n) {int[] ra = new int[length(n)];int i = ra.length - 1;int r = n % 10;n /= 10;ra[i--] = r;while (n != 0) {r = n % 10;n /= 10;ra[i--] = r;}return ra;}}

描述

小Hi和他的小伙伴们一起写了很多代码。时间一久有些代码究竟是不是自己写的,小Hi也分辨不出来了。

于是他实现了一个分类算法,希望用机器学习实现自动分类。

为了评价这个分类算法的优劣,他选出了N份有标记的代码作测试集,并决定用F1 Score作为评价标准。

给出N份代码的实际作者是不是小Hi以及分类算法预测的结果,请你计算F1 Score。

输入

第一行包含一个整数N。(1 <= N <= 1000)    

以下N行每行包含两个字符(+或-)。第一个字符代表这份代码的实际作者是不是小Hi(+代表是,-代表不是),第二个代表预测的作者是不是小Hi(+代表是,-代表不是)。  

输出

一个百分数,X%,代表答案,X保留两位小数。

样例输入

4  
+ +    
+ -  
- +  
- -

样例输出

50.00%

 

送分题,

  

package 蓝桥杯校赛2018;import java.util.Scanner;public class F {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n;int right = 0;n = in.nextInt();for (int i = 0; i < n; i++) {if (in.next().equals(in.next())) {right++;}}System.out.format("%.2f%%", (double) right / n * 100);}
}

描述

H国的身份证号码是一个N位的正整数(首位不能是0)。此外,由于防伪需要,一个N位正整数是合法的身份证号码当且仅当每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K。

例如对于K=5, 101、211、210等都是合法的号码,而106、123、421等都是非法的号码。

给定一个正整数N以及K,请从小到大输出所有合法的号码。  

输入

两个整数N和K。

对于80%的数据,1 ≤ N ≤ 6。

对于100%的数据,1 ≤ N ≤ 9,1 ≤ K ≤ 5。

输出

按从小到大的顺序输出所有合法的N位号码,每个号码占一行。

样例输入

2 4

样例输出

10  
11  
12  
13  
14  
20  
21  
22  
30  
31  
40  
41

 

跟第一题差不多,排列组合,有一点不同,这里的数字可以重复出现

  

package 蓝桥杯校赛2018;import java.util.Scanner;public class G {static int[] a = new int[11];static int k = 4, m = 2;public static void main(String[] args) {Scanner in = new Scanner(System.in);m = in.nextInt();k = in.nextInt();f(0);}static boolean is() {for (int i = 0; i < m; i++) {if (a[i] > k) {return false;}if (i > 0 && a[i] * a[i - 1] > k) {return false;}}return true;}static void f(int n) {if (n == m) {if (is()) {for (int i = 0; i < m; i++) {System.out.print(a[i] + " ");}System.out.println();}return;}for (int i = 0; i <= k; i++) {if (n == 0 && i == 0) {        //首位为0continue;}a[n] = i;f(n + 1);}}}

描述

某人有N袋金币,其中第i袋内金币的数量是Ai。现在他决定选出2袋金币送给小Hi,再选2袋金币送给小Ho,同时使得小Hi和小Ho得到的金币总数相等。他想知道一共有多少种不同的选择方法。

具体来说,有多少种下标四元组(i, j, p, q)满足i, j, p, q两两不同,并且i < j, p < q, Ai + Aj = Ap + Aq。  

例如对于数组A=[1, 1, 2, 2, 2],一共有12种选法:

i j p q
1 3 2 4
1 3 2 5
1 4 2 3
1 4 2 5
1 5 2 3
1 5 2 4
2 3 1 4
2 3 1 5
2 4 1 3
2 4 1 5
2 5 1 3
2 5 1 4

输入

第一行包含一个整数N。  

第二行包含N个整数,A1, A2, A3 ... AN

对于70%的数据,1 <= N <= 100  

对于100%的数据,1 <= N <= 1000, 1 <= Ai <= 1000000

输出

不同选择的数目。

样例输入

5  
1 1 2 2 2

样例输出

12
暴力for循环,还不知道会不会超时

  

package 蓝桥杯校赛2018;import java.util.Scanner;public class H {static int n;static int[] a = new int[1001];static int count;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();for (int i = 0; i < n; i++) {a[i] = in.nextInt();}for (int i = 0; i < n - 1; i++) {for (int j = i + 1; j < n; j++) {for (int q = 0; q < n - 1; q++) {if (q == i || q == j) {continue;}for (int z = q + 1; z < n; z++) {if (z == i || z == j) {continue;}if (a[i] + a[j] == a[q] + a[z]) {//System.out.println((i + 1) + " " + (j + 1) + " " + (q + 1) + " " + (z + 1));count++;}}}}}System.out.println(count);}}

 

转载于:https://www.cnblogs.com/oleolema/p/10050909.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机操作系统(7):进程的基本概念

2.1 进程的基本概念 程序的顺序执行及其特征程序的并发执行及其特征进程的特征与状态进程控制块 2.1.1 程序的顺序执行及其特征 顺序执行包含两层含义&#xff1a; 在单道批处理系统中&#xff0c;对于多个用户程序来说&#xff0c;所有程序是依次执行的。(外部顺序性) 对…

无法打开计算机上的event log服务,Win7系统下启用Windows event log服务发生4201错误的正确解决方法...

Windows event log服务会把程序与系统发送的错误消息记录在日志中&#xff0c;其中还包含了部分有用的诊断信息&#xff0c;近期有Win7用户在启用windows event log服务的时候&#xff0c;发生4201错误提示框。那么该如何解决该问题&#xff1f;下面装机之家分享一下Win7系统下…

广义线性模型的计算机应用技术学院,SPSS数据分析—广义线性模型

我们前面介绍的一般线性模型、Logistic回归模型、对数线性模型、Poisson回归模型等&#xff0c;实际上均属于广义线性模型的范畴&#xff0c;广义线性模型包含的范围非常广泛&#xff0c;原因在于其对于因变量、因变量的概率分布等条件的限制放宽&#xff0c;使其应用范围加大。…

没有时间

请理解时间是运动的表现 转载于:https://www.cnblogs.com/eiya/p/10053311.html

中国第一个计算机病毒什么时候,新中国成立以来的第一例电脑病毒小球病毒是在1988年发现...

扩展阅读&#xff1a;1988年&#xff0c;随着软件交流&#xff0c;石头和小球病毒跟随软盘悄悄地通过香港和美国进入了中国内地&#xff0c;并在人们的懵懂之间在大型企业和研究所间广为传播。小球病毒是国内发现的第一个计算机病毒。发作条件是当系统时钟处于半点或整点&#…

计算机操作系统(8):进程的控制

2.2 进程控制 进程控制是进程管理中最基本的功能。 进程控制包括&#xff1a; ◆ 创建进程 ◆ 终止进程 ◆ 进程状态转换 进程控制是由OS的内核完成的。 2.2.1 进程的创建 2&#xff0e;进程的创建 调用进程创建原语Create&#xff08;&#xff09;&#xff0c;按下述…

Linux起不来,如何修复

用于系统启动不了的情况&#xff1a; 配置文件修改错误。 grub挂的了。 忘记Linux root密码&#xff0c;修改root密码 rd.break mount -o remount,rw /sysroot chroot /sysroot 这样既可对系统进行修复啦&#xff01;比如修改/etc/fstab文件。转载于:https://www.cnblogs.com/y…

计算机操作系统(9):深入理解B/S与C/S架构

深入理解B/S与C/S架构 阅读目录 C/S架构简要介绍 什么是B/S架构 B/S架构的几种形式 发展前景 一、C/S架构简要介绍 在了解什么是B/S架构之前&#xff0c;我们有必要了解一下什么是C/S架构&#xff1a; C/S架构是第一种比较早的软件架构&#xff0c;主要用于局域网内。也叫…

计算机信息管理相关课题论文,计算机信息管理课题论文[].doc

计算机信息管理课题论文[]目 录一、 引言………………………………………………………………… 2二、方案目标………………………………………………………………2三、安全需求………………………………………………………………3四、风险分析……………………………………………

硬件设计--DC/DC电源芯片详解

本文参考&#xff1a;http://www.elecfans.com/article/83/116/2018/20180207631874.html https://blog.csdn.net/wangdapao12138/article/details/79763343 第一次写博客&#xff0c;不喜勿喷&#xff0c;谢谢&#xff01;&#xff01;&#xff01; DC/DC电源指直流转换为直流…

计算机操作系统(10):集群和分布式

简单说&#xff0c;分布式是以缩短单个任务的执行时间来提升效率的&#xff0c;而集群则是通过提高单位时间内执行的任务数来提升效率。 例如&#xff1a; 如果一个任务由10个子任务组成&#xff0c;每个子任务单独执行需1小时&#xff0c;则在一台服务器上执行改任务需10小时…

Unity预计算全局实时GI(gi params)

Unity提供许多进阶的光照贴图控制方法&#xff0c;这些设定被放在一个光照参数集(LightmapParameters)的资源里&#xff0c;好让设定能在不同的项目场景或是透过版本控制和团队一起共享。 要建立一个Lightmap Parameters资源&#xff0c;先找到Project窗口从Create下拉选单建立…

计算机工程与应用单像素成像,2011计算机工程与应用基于压缩感知理论的单像素成像系统研究_白凌云.pdf...

2011计算机工程与应用基于压缩感知理论的单像素成像系统研究_白凌云.pdf116 2011 &#xff0c;47 (33) Computer Engineering and Applications 计算机工程与应用基于压缩感知理论的单像素成像系统研究1 1 2白凌云&#xff0c;梁志毅 &#xff0c;徐志军1 1 2BAI Lingyun &…

计算机操作系统(11):负载均衡

负载均衡是高可用网络基础架构的的一个关键组成部分&#xff0c;有了负载均衡&#xff0c;我们通常可以将我们的应用服务器部署多台&#xff0c;然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站、应用、数据库或其他服务的性能以及可靠性。 为什么要引入负载均衡…

[bzoj3994] [SDOI2015]约数个数和

Description 设d(x)为x的约数个数&#xff0c;给定N、M&#xff0c;求 \(\sum_{i1}^N\sum_{j1}^Md(ij)\) Input 输入文件包含多组测试数据。 第一行&#xff0c;一个整数T&#xff0c;表示测试数据的组数。 接下来的T行&#xff0c;每行两个整数N、M。 Output T行&#xff0c;每…

计算机配置对电子竞技的影响,配置高并不是唯一优点 看看电竞硬件还要啥?...

01宁美国度星河 战列舰XS现在有很多游戏品牌依靠品牌的力量为自己背书&#xff0c;以至于很多游戏玩家很难找的合适自己的高性能电脑&#xff0c;电竞体验也就无从谈起&#xff0c;但是今年的新品里还是有一些意外之喜&#xff0c;在整机性能上表现不俗。比如电脑发烧友们向来有…

玩转oracle 11g(10):初步了解Rman备份

备份与恢复的定义及分类 备份的定义及分类&#xff1a; 备份就是把数据库复制到转储设备的过程。其中&#xff0c;转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本&#xff0c;从不同的角度…

计算机硬盘与格式化,什么是磁盘格式化 格式化与快速格式化区别 - 驱动管家...

电脑磁盘格式化&#xff0c;对于电脑爱好者肯定很好理解&#xff0c;但对于一些新手&#xff0c;可能不太理解。格式化是什么?简单的说&#xff0c;格式化就是把一张空白的盘划分成一个个小的区域&#xff0c;并编号&#xff0c;供计算机储存&#xff0c;读取数据。接下来对磁…

玩转oracle 11g(11):开启归档模式

如果归档模式已经开启并设置归档路径&#xff0c;请跳过 1. 开始-》运行-》cmd 2. 输入&#xff1a;sqlplus sys/密码 as sysdba 3. Sql> archive log list ; 如下图所示&#xff1a; Rman 在线备份 如果“数据库日志模式”为“非存档模式” 按照如下开启归档…

LeetCode:204. 计数质数

1、题目描述 统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。2、题解 2.1、解法一 缺点&#xff1a;太慢 class Solution(object):def countPrimes(self, n):""":type n: int:rtype: int…