蓝桥杯

蓝桥杯 十六进制转八进制

淺唱寂寞╮ 提交于 2020-02-01 05:48:07
问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式   输出n行,每行为输入对应的八进制正整数。    【注意 】   输入的十六进制数不会有前导0,比如012A。   输出的八进制数也不能有前导0。 样例输入   2   39   123ABC 样例输出   71   4435274 分析:一开始想先转换成十进制 再转换成八进制 但是题目中给的十六进制的数太大 就放弃了这个想法。 后来看了这位老哥的做法 http://www.tuicool.com/articles/22I3Ib 才知道原来要先转换成二进制 仔细想想确实 十六进制相当于4位的二进制 而八进制相当于3位的二进制 代码如下 #include <bits/stdc++.h> using namespace std; string a; string b; //string型方便操作,方便在前面添加和后面添加字符串 int c[10001000];//八进制都是数字,故直接定义为int; int main() { int n; cin>>n; while(n--) { a.clear();/

“蓝桥杯”练习系统 - 基础练习 - 数列特征

别等时光非礼了梦想. 提交于 2020-01-31 23:15:18
思路: 找最大最小值、求和. 没有什么特别的地方. #include <iostream> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; int maxn = -10001, minn = 10001, sum = 0; for (int i = 0; i < n; i++) { int x; cin >> x; maxn = max(x, maxn); minn = min(x, minn); sum += x; } cout << maxn << '\n' << minn << '\n' << sum << endl; return 0; } 来源: https://www.cnblogs.com/AntonLiu/p/12247043.html

蓝桥杯横向打印二叉树(不会,好难啊)

天大地大妈咪最大 提交于 2020-01-31 15:35:06
用二维数组存二叉树 思路1:两个数组分别存左儿子和右儿子的编号,一个数组用来存值 #include<iostream> #include<cstdio> #include<sstream> #include<cstring> using namespace std; const int maxn = 110; const int maxm = 710; struct node { int left, right; int left_s, right_s; int v, id, ak; //v便是value,存储结点的值, ak存储字符数组a的长度 char a[10]; //将value的值转化为字符串 }Nodes[maxn]; char map[maxn][maxn]; char a = '.', b = '-', c = '|', d = '\0'; void BinaryTree_set(int rt, int k) { //set,即为构造二叉排序树 ,rt表示根节点 if(Nodes[k].v > Nodes[rt].v) { Nodes[rt].right_s++; //s,sum简写,表示此结点的右子树结点个数 if(Nodes[rt].right != -1) { //如果这个结点有右子树 BinaryTree_set(Nodes[rt].right, k); /

[蓝桥杯2016初赛]压缩变换

女生的网名这么多〃 提交于 2020-01-31 13:17:39
题目链接: http://oj.ecustacm.cn/problem.php?id=1299 题目描述 小明最近在研究压缩算法。他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比。然而,要使数值很小是一个挑战。 最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面出现的数字很大可能是刚出现过不久的数字。对于这种特殊的序列,小明准备对序列做一个变换来减小数字的值。 变换的过程如下: 从左到右枚举序列,每枚举到一个数字,如果这个数字没有出现过,刚将数字变换成它的相反数,如果数字出现过,则看它在原序列中最后的一次出现后面(且在当前数前面)出现了几种数字,用这个种类数替换原来的数字。 比如,序列(a1, a2, a3, a4, a5)=(1, 2, 2, 1, 2)在变换过程为: a1: 1未出现过,所以a1变为-1; a2: 2未出现过,所以a2变为-2; a3: 2出现过,最后一次为原序列的a2,在a2后、a3前有0种数字,所以a3变为0; a4: 1出现过,最后一次为原序列的a1,在a1后、a4前有1种数字,所以a4变为1; a5: 2出现过,最后一次为原序列的a3,在a3后、a5前有1种数字,所以a5变为1。 现在,给出原序列,请问,按这种变换规则变换后的序列是什么。 输入 输入第一行包含一个整数n,表示序列的长度。第二行包含n个正整数,表示输入序列a。

第七届蓝桥杯javaA组省赛题解

假装没事ソ 提交于 2020-01-31 04:07:25
第七届蓝桥杯javaA组省赛题解 1.煤球数目 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), … 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 思路: 直接计算 public static void main ( String [ ] args ) { int sum = 0 ; int gap = 1 ; int num = 0 ; for ( int i = 0 ; i < 100 ; i ++ ) { sum += num + gap ; num += gap ; gap ++ ; } System . out . println ( sum ) ; } 答案:171700 2.生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 思路: 236应该不超过50岁,两边夹逼 public static void main ( String [ ] args ) {

质因数分解(蓝桥杯)

和自甴很熟 提交于 2020-01-31 04:03:16
质因数分解(蓝桥杯)   机械类萌新第一次发稿,最近在刷蓝桥杯的练习题。 题目 问题描述   求出区间[a,b]中所有整数的质因数分解。 输入格式   输入两个整数a,b。 输出格式   每行输出一个数的分解,形如k=a1 a2 a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例) 样例输入 3 10 样例输出 3=3 4=2*2 5=5 6=2*3 7=7 8=2*2*2 9=3*3 10=2*5 代码 # include <stdio.h> int main ( ) { int fun1 ( int m ) ; int fun2 ( int n ) ; int a , b , t = 1 , u = 1 , i ; scanf ( "%d%d" , & a , & b ) ; for ( i = a ; i <= b ; i ++ ) { if ( fun1 ( i ) == 0 ) printf ( "%d=%d\n" , i , i ) ; u = i ; t = 1 ; if ( fun1 ( i ) == 1 ) { printf ( "%d=" , i ) ; while ( 1 ) { t = t * fun2 ( u ) ; printf ( "%d" , fun2 ( u ) ) ; if ( t != i ) printf ( "*" ) ;

个人蓝桥杯代码库

扶醉桌前 提交于 2020-01-31 03:04:39
蓝桥杯2011年编程大题 8.程序设计(满分15分) 方阵的主对角线之上称为“上三角”。 请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。 例如:当n=3时,输出: 1 2 3 6 4 5 当n=4时,输出: 1 2 3 4 9 10 5 8 6 7 当n=5时,输出: 1 2 3 4 5 12 13 14 6 11 15 7 10 8 9 程序运行时,要求用户输入整数n(3~20) 程序输出:方阵的上三角部分。 要求格式:每个数据宽度为4,右对齐。 简单的模拟题。 # include <iostream> # include <cstdio> # include <cstring> using namespace std ; int n ; int val [ 22 ] [ 22 ] ; //chance 0向右 1向左下 2向上 void triangle ( int sum , int step , int x , int y , int chance ) { val [ x ] [ y ] = step ; if ( step == sum ) { return ; } if ( chance == 0 ) { //向右 if ( step < n ) { //第一行特判 triangle (

蓝桥杯——寒假作业

和自甴很熟 提交于 2020-01-30 19:44:38
题目地址 现在小学的数学题目也不是那么好玩的。 看看这个寒假作业: 每个方块代表1~13中的某一个数字,但不能重复。 比如: 6 + 7 = 13 9 - 8 = 1 3 * 4 = 12 10 / 2 = 5 以及: 7 + 6 = 13 9 - 8 = 1 3 * 4 = 12 10 / 2 = 5 就算两种解法。(加法,乘法交换律后算不同的方案) 你一共找到了多少种方案? 输出 请填写表示方案数目的整数。 【方法一】 用 stl 中的 next_permutation函数 ,全排列,然后判断是否符合情况,符合则++ #include<iostream> #include<ctime> #include<cmath> #include<bits/stdc++.h> using namespace std; bool f(int a[]){ if(a[0]+a[1]!=a[2]) return false; if(a[3]-a[4]!=a[5]) return false; if(a[6]*a[7]!=a[8]) return false; if(a[9]!=a[10]*a[11]) return false; return true; } int main() { int a[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13}; int ans = 0;

【蓝桥杯BASIC-25】回形取数 Java版

女生的网名这么多〃 提交于 2020-01-30 07:20:23
基础练习 回形取数 时间限制:1.0s 内存限制:512.0MB 问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式   输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 8 9 6 3 2 5 样例输入 3 2 1 2 3 4 5 6 样例输出 1 3 5 6 4 2 分析 用四个循环表示在各个方向的前进,将取过的数标记为-1。用最外层的循环控制程序在取过所有的数后结束。 Java 代码: import java . io . * ; public class Main { public static void main ( String [ ] args ) throws Exception { BufferedReader in = new BufferedReader ( new InputStreamReader ( System . in ) ) ; String [ ] s1 = in . readLine ( ) . split ( " " )

蓝桥杯PREV-21 历届试题 回文数字

血红的双手。 提交于 2020-01-30 03:54:06
蓝桥杯PREV-21 历届试题 回文数字 问题描述   观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。   本题要求你找到一些5位或6位的十进制数字。满足如下要求:   该数字的各个数位之和等于输入的整数。 输入格式   一个正整数 n (10<n<100), 表示要求满足的数位和。 输出格式   若干行,每行包含一个满足要求的5位或6位整数。   数字按从小到大的顺序排列。   如果没有满足条件的,输出:-1 样例输入 44 样例输出 99899 499994 589985 598895 679976 688886 697796 769967 778877 787787 796697 859958 868868 877778 886688 895598 949949 958859 967769 976679 985589 994499 样例输入 60 样例输出 -1   很显然判断条件有两个,一个是每位相加是固定数,另一个是满足回文,那就设两个函数分别来判断这两个条件,将满足的数字存放在一个数组里,再输出就完事。不设函数也可以,就是写起来容易乱。 # include <iostream> # include <bits/stdc++.h> using namespace std ; /* run