蓝桥杯
文章平均质量分 92
blue_mxy
这个作者很懒,什么都没留下…
展开
-
2017年第八届蓝桥杯-凑算式
凑算式 B DEFA + --- + ------- = 10 C GHI (如果显示有问题,可以参见【图1.jpg】) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。这个算式一共有多少种解法?注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。根据例子可以知道+号后面的内容需要通分。#include .原创 2020-10-16 19:05:11 · 108 阅读 · 0 评论 -
2016年第七届蓝桥杯-生日蜡烛
#include <iostream>using namespace std;const int sum = 236;bool solve(int y){ int ans = 0; for(int i = y;i < 200;i++){ ans += i; if(ans == 236) return true; if(ans > 236) return false; } return false;}int main(){ for(int y =原创 2020-10-16 17:13:48 · 92 阅读 · 0 评论 -
2017年第八届-取一个数的第K位
#include <iostream>#include <cstdio>using namespace std;//求一个数有几位数 int len(int x){ if(x<10) return 1; return len(x/10)+1;} // 取x的第k位数字int f(int x, int k){ if(len(x)-k==0) return x%10; //如果长度和k相同就表明此时这个数在个位上 return f(x/10,k); //原创 2020-10-14 23:19:03 · 145 阅读 · 0 评论 -
2017年第八届蓝桥杯-方格分割
解题:从中心点出发,当向右移动时,标记以访问。同时,左边也要标记以访问。最终的结果还要/4,因为可以旋转四个面。用v数组来模拟以访问,也需要用到回溯。代码:#include <iostream>using namespace std;int ans = 0;int v[7][7];int X[4] = {0,1,0,-1},Y[4] = {1,0,-1,0};void solve(int x,int y){ if(x == 0 || x == 6 || y == 0 || y原创 2020-10-14 22:54:24 · 136 阅读 · 0 评论 -
2017年第八届蓝桥杯-承压计算
注意事项:放大输入,避免出现小数,精度丢失放大和可能int类型不够用代码:#include <iostream>#include <algorithm>#define N 29using namespace std;typedef long long ll;ll mul = 1; //用来放大大数,防止出现小数,精度丢失 ll arr[30][30]; //数字有29行(0-28),第29行是电子称 int main(){ //放大 mul <&原创 2020-10-14 22:18:56 · 266 阅读 · 0 评论 -
2017年第八届蓝桥杯-等差数列
解题步骤:埃氏筛法生成素数列枚举首项枚举公差检查是否够10个长度set s;*坑:set中的最后一个元素为(s.rbegin()),find(x)如果找到就返回在容器中的下标,否则就返回s.end()代码:#include <iostream>#include <set>#define N 5000using namespace std;typedef long long ll;set<ll> s;//埃氏筛法-生成素数列 bool is原创 2020-10-13 23:37:54 · 205 阅读 · 0 评论 -
2018年蓝桥杯明码
#include <iostream>#include <cstdio>#include <sstream>using namespace std;void toBinary(int i, string &ans){ if(i >= 0){ ans[0] = '-'; for(int j = 0;j < 7;j++){ if((i>>j)&1 == 1){ ans[8-j-1] = '1';原创 2020-10-12 22:19:01 · 304 阅读 · 0 评论 -
C++输入数字后输入字符串
int i;(cin>>i).getline(); //吃掉换行符原创 2020-10-12 22:04:45 · 577 阅读 · 0 评论 -
C++将数字转换为字符串
#include <iostream>#include <sstream>using namespace std;void i2s(int i,string &s){ stringstream ss; ss << i; ss >> s;}int main(){ string s; int i = 2343243; i2s(i,s); cout << s << endl; return 0;}运原创 2020-10-12 21:59:09 · 1355 阅读 · 0 评论 -
2018年第九届蓝桥杯-打印图形
题目:如下的程序会在控制台绘制分形图(就是整体与局部自相似的图形)。当n=1,2,3的时候,输出如下:请仔细分析程序,并填写划线部分缺少的代码。n=1时: o ooo o n=2时: o ooo o o o o ooooooooo o o o o ooo o n=3时: o ooo原创 2020-10-09 13:13:36 · 570 阅读 · 0 评论 -
2018届第九届蓝桥杯-第几个幸运数
标题:第几个幸运数到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。我们来看前10个幸运数字是:3 5 7 9 15 21 25 27 35 45因而第11个幸运数字是:49小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。请你帮小明计算一下,59084709587505是第几个幸运数字。需要.原创 2020-10-07 18:11:43 · 1739 阅读 · 2 评论 -
2018届第九届蓝桥杯-航班时间
标题:航班时间【问题背景】小h前往美国参加了蓝桥杯国际赛。小h的女朋友发现小h上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”。小h对超音速飞行感到十分恐惧。仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有12小时时差,故飞机总共需要14小时的飞行时间。不久后小h的女朋友去中东交换。小h并不知道中东与北京的时差。但是小h得到了女朋友来回航班的起降时间。小h想知道女朋友的航班飞行时间是多少。【问题描述】对于一个可能跨时区的航班,给定来回程的原创 2020-10-07 18:09:36 · 364 阅读 · 0 评论 -
第八届蓝桥杯-尾数为零
标题:乘积尾零如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 1486 5722 3135 1170 4014 5510 5120 729 2880 9019 2049 698 .原创 2020-10-06 21:20:11 · 201 阅读 · 0 评论 -
第八届蓝桥杯-星期一
标题:星期一整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)注意:需要提交的只是一个整数,不要填写任何多余的内容或说明文字。解题:算出者之间的总天数查看电脑日历得出2000年12月31日为周日模板:一 二 三 四 五 六 日每个模板7天,用总天数模7,得到余数为6,所以1901年1月1日为周二总天数/7就是答案#include <iostream>using namespace std;/原创 2020-10-06 20:16:55 · 187 阅读 · 0 评论 -
第八届蓝桥杯-分数
标题:分数1/1 + 1/2 + 1/4 + 1/8 + 1/16 + .... 每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来。类似:3/2当然,这只是加了前2项而已。分子分母要求互质。注意:需要提交的是已经约分过的分数,中间任何位置不能含有空格。请不要填写任何多余的文字或符号。解决方案:此题规模较小,直接用等比公式求和就行,得出结果后看看能不能约分。展开式子:[(1/2)^0 + (1/2) ^1 + (1/2) ^2+ ……+(1/2) ^19 ]原创 2020-10-06 19:46:03 · 392 阅读 · 0 评论 -
最大公共子串-动态规划
标题:最大公共子串最大公共子串长度问题就是: 求两个串的所有子串中能够匹配上的最大长度是多少。比如:“abcdkkk” 和 “baabcdadabc”, 可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。首先请你们自己画出一个父串和子串的矩阵,例如:dp[i][j]0 0 a b c d k k k0 0 0 0 0 0 0 0b 0a 0a 0b 0c 0d 0a 0d 0a.原创 2020-08-18 21:44:28 · 2044 阅读 · 0 评论 -
日志统计
标题:日志统计小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有N行。其中每一行的格式是:ts id 表示在ts时刻编号id的帖子收到一个"赞"。 现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度为D的时间段内收到不少于K个赞,小明就认为这个帖子曾是"热帖"。 具体来说,如果存在某个时刻T满足该帖在[T, T+D)这段时间内(注意是左闭右开区间)收到不少于K个赞,该帖就曾是"热帖"。 给定日志,请你帮助小明统计出所有曾是"热帖"的帖子编号。.原创 2020-08-11 22:28:43 · 256 阅读 · 0 评论 -
下三角矩阵的实现
题目:下三角矩阵特点:a[j] <= i ,i为行数。#include <iostream>#include <queue>#include <cstdio>#include <vector>#include <map>using namespace std;//下三角矩阵特点:a[j] <= i ,i为行数。 int main(){ int n,res=0; //矩阵大小和交换次数 cin >>原创 2020-08-06 22:32:31 · 4180 阅读 · 0 评论 -
区间计算素数
题目:bool smart_prime[5000]; //用来统计素数个数 bool prime[5000]; //素数值 typedef long long ll;void segment_sieve(ll a,ll b){ for(int i = 2;i * i < b;i++) smart_prime[i] = true; for(int i = 0;i < b - a;i++) prime[i] = true; for(int i = 2;ll(i * i) <原创 2020-08-05 23:03:54 · 273 阅读 · 0 评论 -
埃氏筛法
算法逻辑:首先在is_prime中找到最小的数i,它就是素数i*n(n=2,3,4…)都不是素数以此类推到nbool is_prime[5000]; //用来统计素数个数 vector<int> prime; //素数值 //埃氏筛法int sieve(int n){ int count = 0; for(int i = 2;i <= n;i++) is_prime[i] = true; for(int i = 2;i <= n;i++){ if(is_原创 2020-08-05 21:34:26 · 170 阅读 · 0 评论 -
辗转相除-约数枚举-整数分解
辗转相除://辗转相除 int gcd(int a,int b){ int mod = 0; while(b > 0){ mod = a; a = b; b = mod % b; } return a;}//辗转相除-递归 int gcd1(int a,int b){ if(b == 0) return a; return gcd1(b,a%b);} 约数枚举:在这里插入代码片...原创 2020-08-05 21:05:54 · 125 阅读 · 0 评论 -
蓝桥杯递增三元组
标题:递增三元组给定三个整数数组A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],请你统计有多少个三元组(i, j, k) 满足:1. 1 <= i, j, k <= N 2. Ai < Bj < Ck 【输入格式】 第一行包含一个整数N。第二行包含N个整数A1, A2, ... AN。第三行包含N个整数B1, B2, ... BN。第四行包含N个整数C1, C2, ... CN。对于30%原创 2020-07-19 22:12:47 · 2302 阅读 · 4 评论 -
蓝桥杯摔手机测试次数
题目: 标题:测试次数x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。如果到了塔的最原创 2020-07-16 22:41:05 · 674 阅读 · 1 评论 -
小根堆-数组实现
特点:父节点永远比孩子节点小,不强制要求左孩子比右孩子小,但是为了实现方便,我令其左孩子比右孩子小。反之为大根堆。push:插入元素数组长度增加(注意:增加的不是本次插入所需要的位置,而是下次元素的位置,这句话能解释为什么pop的时候需要–se才能拿到当前堆中的最后一个元素)从下往上判断是否满足小根堆特点,每次上移都是从当前节点移动到父节点,注意:是位置移动,真正的值不移动。pop:删除元素得到最后一个元素的值从根节点往下判断是否满足小根堆特点,每次下移都是当前节点移动到左孩子节点,注意:原创 2020-07-15 14:30:10 · 648 阅读 · 0 评论 -
贪心法之字典序最小问题
增加一个条件:使得最早得到字典序最小的字符串思想:我每次都比较字符串开头和结尾,小的字符输出,我最终得到的就是字典序最小的字符串。如果你是这样的思想对于没有我自己增加的条件来说是可以的。修改后的思想:比较S和S’(S反转后的字符)看谁的字典序更小如果S较小,就从S的头部取出一个字符添加到T中如果S’较小,就从S的尾部取出一个字符添加到T中代码实现:#include <iostream>#include <cstring>using namespace st..原创 2020-05-26 19:23:11 · 567 阅读 · 0 评论 -
向量叉乘计算多边形面积
三角形面积可以用向量积来计算:S = 1 / 2 * ab x ac =1 / 2 * |ab| * |ac| * sin @(x表示叉乘,@表示ab和ac两边之间的夹角)为什么要乘1/2呢?因为ab x ac 求出来的是ab和ac为边的四边形的面积。多边形可以拆成多个三角形来计算面积。假定有n个顶点,固定一个点就可以将它分为n-2个三角形。S = A1 + A2 + A3 + A4该图中固定的点为p1。n=6,分为4个部分。A1 = 1/2 p1p2 x p1p3A2 = 1/2原创 2020-05-16 21:51:32 · 4203 阅读 · 0 评论 -
快速幂原理
小朋友你是不是有很多问号?快速幂是怎么实现的,反正我第一次接触的时候以为是机器数有什么猫腻。推理:计算:2 ^10= 2 ^10=(2*2) ^5 = 4 ^5 //第一次遇到奇数次幂 = 4 ^1 * 4 ^4 //把奇数次幂分解为:基数 ^1 * 基数 ^5-1= 4 ^1 * (4*4) ^2 = 4 ^1 * 16 ^2= 4 ^1 * (16*16) ^1= 4 ^1 * (256) ^1= 1024为什么要基数相乘、幂减小一半??比如说要原创 2020-05-16 21:16:28 · 254 阅读 · 0 评论 -
蓝桥杯剪邮票总结
题目: 剪邮票如【图1.jpg】, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。图一:图二、图三、...原创 2020-04-20 02:06:09 · 230 阅读 · 0 评论 -
全排列-抓取法生成-去重复
算法思想:1、根据一定规则来生成,避免重复。2、满足条件的放入临时数组a中。3、标记数组visit用来控制回溯和标记。说明: 文末有交换法生成全排列链接 1、规则:当前元素不是第0号元素,并且前一个元素与当前元素值相等,并且前一个元素未被抓取。该元素不能要,continue跳过。 2、因为是涉及到抓取,c数组内容不发生改变,所以要一个临时数组b来存放排列。 3、visit数组用来保证...原创 2020-04-18 01:05:52 · 333 阅读 · 1 评论 -
快速排序-双指针
快速排序的思想划分区间,中间有个flag,左边的数小于a[flag],右边的数大于a[flag]。 注意,虽然左<中 && 中 < 右,但是在左右各自区间可能不是有序的,只是整体小或大而已。处理左区间,递归处理就行。处理右区间,递归处理就行。整体框架,划分区间函数/*********************************** @param a...原创 2020-04-15 01:32:40 · 539 阅读 · 0 评论 -
全排列思想详解-蓝桥杯2015省赛C++九数组数中
全排列recursion从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个素的一个排列。当m=n时所有的排列情况叫全排列。公式:全排列数f(n)=n!(定义0!=1)** 人生不要做的事情之一——递归算法中去每一步、每一个值都弄清楚**递归设计:因为123全排列求解和23全排列求解是一样的,所以我们使用递归。递归三要素:函数功能、...原创 2020-04-10 21:58:00 · 437 阅读 · 0 评论 -
蓝桥杯高精度加法 C++代码实现
问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即...原创 2020-04-08 14:20:08 · 423 阅读 · 0 评论 -
蓝桥杯 小计算器 C++详细说明
问题描述模拟程序型计算器,依次输入指令,可能包含的指令有 1. 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个当前进制的数 2. 运算指令:'ADD','SUB','MUL','DIV','MOD',分别表示加减乘,除法取商,除法取余 3. 进制转换指令:'CHANGE K',将当前进制转换为K进制(2≤K≤36) 4. 输出指令:'EQUA...原创 2020-04-07 22:56:53 · 481 阅读 · 0 评论