整理这篇博客呢,是因为蓝桥杯临近,所以看了一下去年的赛题,去年大一没有参加蓝桥杯,所以这些题目是从别人的博客中看到的,搜集过来整理一篇自己的笔记,第一次要参加蓝桥杯,内心有点小惊喜,伴随而来的,还有些许小紧张~
因为没有找到可以提交题目的网站,所以代码中若出先错误,还望谅解与指出。
第一题 购物清单
小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。
小明很厌烦,但又不好推辞。 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。 小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。 现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。 取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。 以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。 -------------------- **** 180.90 88折 **** 10.25 65折 **** 56.14 9折 **** 104.65 9折 **** 100.30 88折 **** 297.15 半价 **** 26.75 65折 **** 130.62 半价 **** 240.28 58折 **** 270.62 8折 **** 115.87 88折 **** 247.34 95折 **** 73.21 9折 **** 101.00 半价 **** 79.54 半价 **** 278.44 7折 **** 199.26 半价 **** 12.97 9折 **** 166.30 78折 **** 125.50 58折 **** 84.98 9折 **** 113.35 68折 **** 166.57 半价 **** 42.56 9折 **** 81.90 95折 **** 131.78 8折 **** 255.89 78折 **** 109.17 9折 **** 146.69 68折 **** 139.33 65折 **** 141.16 78折 **** 154.74 8折 **** 59.42 8折 **** 85.44 68折 **** 293.70 88折 **** 261.79 65折 **** 11.30 88折 **** 268.27 58折 **** 128.29 88折 **** 251.03 8折 **** 208.39 75折 **** 128.88 75折 **** 62.06 9折 **** 225.87 75折 **** 12.89 75折 **** 34.28 75折 **** 62.16 58折 **** 129.12 半价 **** 218.37 半价 **** 289.69 8折 -------------------- 需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。 特别地,半价是按50%计算。 请提交小明要从取款机上提取的金额,单位是元。 答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。 特别提醒:不许携带计算器入场,也不能打开手机。
分析:
去年参加过的人有的说这题恶心,有的说这题容易,感觉容易的人自然有方法,Excel表格计算是一种方法,但我看见有很多人用文件输入的方法,看起来更简单,但是,如果两种方法都不会的话,手算真的确实非常恶心。
5200
第二题 等差素数列
标题:等差素数列2,3,5,7,11,13,....是素数序列。类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,
叫等差素数数列。上边的数列公差为30,长度为6。2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差
数列。这是数论领域一项惊人的成果!有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10的
等差素数列,其公差最小值是多少?
注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。
分析:
本题虽然是填空题,但是手算的数据量太大,还需要借助于代码来实现。我们可以先将一定的范围内的不是素数的数标记出来,然后遍历将没有标记的素数从 1 到一个稍微大点的范围内判断一遍,看时候能找到 10 个符合条件的素数,因为题中并未明确给出数据的范围,很多地方需要我们假设。
210
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int s[100000000];
bool judge(int p,int q)///找从素数p开始,以q为公差,是否能找到符合条件的10个素数
{
for(int i=1;i<10;i++)
{
p+=q;
if(s[p])
return false;
}
return true;
}
int main()
{
for(int i=2;i<=10000;i++)///双重for循环将100000000内的虽有不是素数的数标记出来
for(int j=i*i;j<=100000000;j+=i)
s[j]=1;
for(int i=2;i<=10000;i++)///随意整个范围遍历数组s
{
if(s[i])
continue;
for(int j=1;j<=1000;j++)///如果i是素数,就设定个范围找是否能以j作为公差,找出10个素数序列
{
if(judge(i,j))
printf("%d\n",j);
}
}
return 0;
}
第三题 承压计算
X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。
每块金属原料的外形、尺寸完全一致,但重量不同。
金属材料被严格地堆放成金字塔形。
7
5 8
7 8 8
9 2 7 2
8 1 4 9 1
8 1 8 8 4 1