蓝桥杯

2015第六届蓝桥杯JavaB组决赛(国赛)试题汇总及试题详解

那年仲夏 提交于 2019-12-02 10:55:36
蓝桥杯历年省赛真题汇总及题目详解 蓝桥杯历年决赛试题汇总及试题详解 目录 第一题:分机号 第二题:五星填数 第三题:显示二叉树 第四题:穿越雷区 第五题:表格计算 第六题:铺瓷砖 第一题:分机号 题目描述 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如: 751,520,321 都满足要求,而, 766,918,201 就不符合要求。 现在请你计算一下,按照这样的规定,一共有多少个可用的3位分机号码? 请直接提交该数字,不要填写任何多余的内容。 public class Main { public static void main(String[] args) { int ans = 0; for (int i = 9; i >= 2; i--) { for (int j = i - 1; j >= 1; j--) { for (int k = j - 1; k >= 0; k--) { ans++; } } } System.out.println(ans); } } 第二题:五星填数 题目描述 如【图1.png】的五星图案节点填上数字:1~12,除去7和11。 要求每条直线上数字和相等。 如图就是恰当的填法。 请你利用计算机搜索所有可能的填法有多少种。 注意:旋转或镜像后相同的算同一种填法。 请提交表示方案数目的整数

2015年第六届蓝桥杯省赛A组(C/C++)

送分小仙女□ 提交于 2019-12-02 10:55:24
部分转载自:http://blog.csdn.net/summonlight/article/details/61920048 还有:https://zhidao.baidu.com/question/310414478.html 1. 方程整数解 方程: a^2 + b^2 + c^2 = 1000 这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解。 你能算出另一组合适的解吗? 请填写该解中最小的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 代码: #include <cstdio> #include <iostream> #include <iostream> #include <algorithm> #include <vector> using namespace std; int main(void) { for(int i = 0; i < 1000; i++) { for(int j = 0; j < 1000; j++) { int k = 1000 - i * i - j * j; int kk = (int)(sqrt((double)(k))); if(k == kk * kk) { cout << i << " " << j << " " << kk << endl; } } } return 0; } 正确答案:

2015第六届蓝桥杯JavaA组决赛(国赛)试题汇总及试题详解

百般思念 提交于 2019-12-02 10:55:10
蓝桥杯历年省赛真题汇总及题目详解 蓝桥杯历年决赛试题汇总及试题详解 目录 第一题:胡同门牌号 第二题:四阶幻方 第三题:显示二叉树 第四题: 穿越雷区 第五题:切开字符串 第六题:铺瓷砖 题解待更新 第一题:胡同门牌号 题目描述 小明家住在一条胡同里。胡同里的门牌号都是连续的正整数,由于历史原因,最小的号码并不是从1开始排的。 有一天小明突然发现了有趣的事情: 如果除去小明家不算,胡同里的其它门牌号加起来,刚好是100! 并且,小明家的门牌号刚好等于胡同里其它住户的个数! 请你根据这些信息,推算小明家的门牌号是多少? 请提交该整数,不要填写任何多余的内容或说明性文字。 第二题:四阶幻方 题目描述 把1~16的数字填入4x4的方格中,使得行、列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方。 四阶幻方可能有很多方案。如果固定左上角为1,请计算一共有多少种方案。 比如: 1 2 15 16 12 14 3 5 13 7 10 4 8 11 6 9 以及: 1 12 13 8 2 14 7 11 15 3 10 6 16 5 4 9 就可以算为两种不同的方案。 请提交左上角固定为1时的所有方案数字,不要填写任何多余内容或说明文字。 第三题:显示二叉树 题目描述 排序二叉树的特征是: 某个节点的左子树的所有节点值都不大于本节点值。 某个节点的右子树的所有节点值都不小于本节点值。

2015年第六届蓝桥杯省赛(C/C++ B组)第七题

江枫思渺然 提交于 2019-12-02 10:54:16
第7题:牌型种数 题目大意   去掉大小王的52张扑克牌,不考虑花色及顺序,取13张,一共有多少种取法? 思路:基础dfs、 #include<stdio.h> #include<string.h> using namespace std; int output; void dfs(int shu,int sum) { if(shu>14)return ;//两个剪枝很重要 if(sum>13)return ;//两个剪枝很重要 if(sum==13) { output++; return ; } for(int i=0;i<5;i++) { dfs(shu+1,sum+i); } return ; } int main() { output=0; dfs(1,0); printf("%d\n",output); } 来源: CSDN 作者: mengxiang000000 链接: https://blog.csdn.net/mengxiang000000/article/details/50768909

C语言蓝桥杯比赛原题和解析

别来无恙 提交于 2019-12-01 20:28:06
蓝桥杯:在计算机编程领域,是具有一定含金量的竞赛,用于选拔信息技术人才。 一般分为多个领域,其中包含了C/C#/C++/Java/Python等编程语言的测试题,多为算法的设计题。 下面,在搜题过程中,整理了一些比较有意思的原题,用于提高算法设计技巧。 注意:这里给出的答案不唯一,且为C/C++试题及解析! 题目: 第一题:煤球数目 有一堆煤球,堆成三角棱锥形。具体: 第一层放1 个, 第二层3 个(排列成三角形), 第三层6 个(排列成三角形), 第四层10 个(排列成三角形), .... 如果一共有100 层,共有多少个煤球? 请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 读懂出题者的意图和考察目标: 1、 能不能识破递推规律。显然,这是一个递推(数列)类型的问题。 2、 是否掌握递推法。基本递推法是:后一项是前面若干项的计算。 3、 是否掌握递推法的C 语言的实现。程序= 算法+ 数据。这个问题的算法,是一个简单的for 循环。这个问题中的数据是整型,但是,有些问题的计算过程和计算结果是浮点型。所以,在这一点要特别小心。每次期末考试,很多人都因为这个原因而扣分。 4、 是否具有细节观察和理解能力。“一堆煤球”、“三角棱锥形”,“请填表示煤球总数目的数字”、“注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字”

蓝桥杯BASIC-13 数列排序

流过昼夜 提交于 2019-12-01 15:33:13
问题描述   给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200 输入格式   第一行为一个整数n。   第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。 输出格式   输出一行,按从小到大的顺序输出排序后的数列。 样例输入 5 8 3 6 4 9 样例输出 3 4 6 8 9 这题调用Arrays.sort方法即可 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); int[] arr=new int[n]; for(int i=0;i<n;i++){ arr[i]=sc.nextInt(); } Arrays.sort(arr); for(int i=0;i<n;i++){ if(i==n-1) System.out.print(arr[i]); else System.out.print(arr[i]+" "); } } } 来源: https://www.cnblogs.com/littlepage/p/11690936.html

蓝桥杯程序设计大赛第四届省赛本科B组

て烟熏妆下的殇ゞ 提交于 2019-11-30 00:31:14
大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。 高斯获得博士学位的那天日记上标着:8113 请你算出高斯获得博士学位的年月日。 提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21 请严格按照格式,通过浏览器提交答案。 注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。 # include <stdio.h> int isLeap ( int y ) ; int nday ( int y , int m , int d ) ; void ymd ( int n ) ; int main ( void ) { int n = 8113 ; int yb = 1777 , mb = 4 , db = 30 ; //birth n = n - 1 + nday ( yb , mb , db ) ; int yp , np ; //print for ( int i = yb ; n > 0 ; i ++

寻找三位数 (蓝桥杯~算法提高)

隐身守侯 提交于 2019-11-29 22:23:12
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成 1:2:3的比例,试求出所有满足条件的三个三位数。 例如:三个三位数192,384,576满足以上条件。 Input 无 Output 输出每行有三个数,为满足题设三位数。各行为满足要求的不同解。 int main() { for(int i=123;i<354;i++) { set<int>st; for(int j=1;j<=3;j++) { int k=i*j; while(k) { st.insert(k%10); k/=10; } } if(st.size()==9&&st.find(0)==st.end()) cout<<i<<" "<<i*2<<" "<<i*3<<endl; else continue; } ok; } 来源: https://www.cnblogs.com/Shallow-dream/p/11537813.html

问题 1470: [蓝桥杯][基础练习VIP]时间转换

穿精又带淫゛_ 提交于 2019-11-28 21:22:22
问题 1470: [蓝桥杯][基础练习VIP]时间转换 时间限制: 1Sec 内存限制: 128MB 提交: 2634 解决: 1760 题目描述 给定一个以秒为单位的时间t,要求用 “< H> :< M> :< S> ”的格式来表示这个时间。< H> 表示时间,< M> 表示分钟, 而< S> 表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。 输入 输入只有一行,是一个整数t(0< =t< =86399)。 输出 输出只有一行,是以“< H> :< M> :< S> ”的格式所表示的时间,不包括引号。 样例输入 5436 样例输出 1:30:36 #include <iostream> using namespace std; int main() { int h = 0, m = 0, s = 0, t; cin >> t; h = t / 3600; t = t % 3600; m = t / 60; t = t % 60; s = t; cout << h << ":" << m << ":" << s; return 0; } 来源: CSDN 作者: ~ 知至~ 链接: https://blog.csdn.net/S_999999/article/details/103244424

2017年蓝桥杯B组C/C++决赛题解

狂风中的少年 提交于 2019-11-28 20:31:51
2017年蓝桥杯B组C/C++决赛题目(不含答案) 1.36进制 ok 求36进制,类比二进制转10进制,36^3 + 36^2 + 36^1 + 36^0 2.磁砖样式 ok dfs搜索 我自己写的答案不对dfs多搜了一些,原因是 判断条件不能连等于 例如a==b==c==d 是错误的,已经改正 #include <stdio.h> #include <string.h> #include <map> #include <algorithm> using namespace std; const int w = 3, h = 10; int g[w][h]; int ans = 0; map<int, int> Hash; //检查2x2格子颜色是否相同 bool check_color() { for(int i = 0; i < w; i++) for(int j = 0; j < h; j++) { if(i+1 < w && j+1 < h) { if((g[i][j]+g[i][j+1]+g[i+1][j]+g[i+1][j+1]) % 4 == 0) return false; } } return true; } void dfs(int x, int y) { if(g[x][y] == -1) { //横向摆放 if(y+1 < h && g[x][y+1] =