最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 3131331313,就是不是U型数字. 现在蒜头君问你,[1,100000][1,100000] 有多少U型数字? 提示:请不要输出多余的符号. import java.util.Scanner; public class Main1{ public static String mp[] = new String[…
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共…
一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张. 请提交该数字(一个整数),不要写任何多余的内容或说明性文字. 分析:直接枚举10000-99999之间的数字,如果带4,直接排除:不带4的,记录一次,直到枚举完后输出. #include <iostream…
A模拟 代码1 #include<bits/stdc++.h> using namespace std; int n = 101; int a[120][120]; int ans = 0; int main(){ //填充数组 int t = 0; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ a[i][j] = ++t; } } int cen = n/2+1; int p = 1; int l = 1,r=n; //上半 for(…
1,结果填空:年龄 今天蒜头君带着花椰妹和朋友们一起聚会,当朋友们问起年龄的时候,蒜头君打了一个哑谜(毕竟年龄是女孩子的隐私)说:“我的年龄是花椰妹年龄个位数和十位数之和的二倍”. 花椰妹看大家一脸懵逼,就知道大家也不知道蒜头君的年龄,便连忙补充道:“我的年龄是蒜头君个位数和十位数之和的三倍”. 请你计算:蒜头君和花椰妹年龄一共有多少种可能情况? 提醒:两位的年龄都是在 [10,100)[10,100) 这个区间内. 分析: 暴力枚举每一个人可能的年龄,然后判断是否符合条件. #include<…
题目描述 三体人将对地球发起攻击.为了抵御攻击,地球人派出了 $A × B × C$ 艘战舰,在太 空中排成一个 $A$ 层 $B$ 行 $C$ 列的立方体.其中,第 $i$ 层第 $j$ 行第 $k$ 列的战舰(记为战舰 $d(i, j,k)$)的生命值为 $d_{i, j,k}$. 三体人将会对地球发起 m 轮“立方体攻击”,每次攻击会对一个小立方体中的所有 战舰都造成相同的伤害.具体地,第 t 轮攻击用 7 个参数 $la_t ,ra_t , lb_t ,rb_t , lc_t ,rc_t…
题目 标题:等差素数列 2,3,5,7,11,13,....是素数序列. 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列. 这是数论领域一项惊人的成果! 有这一理论为基础,请你借助手中的计算机,满怀信心地搜索: 长度为10的等差素数列,其公差最小值是多少? 注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字. 题解 絮絮叨叨(骂骂咧咧 一开始…
第十题 付账问题   [题目描述]    几个人一起出去吃饭是常有的事.但在结帐的时候,常常会出现一些争执.    现在有 n 个人出去吃饭,他们总共消费了 S 元.其中第 i 个人带了 ai 元.幸运的是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人分别要出多少钱呢?    为了公平起见,我们希望在总付钱量恰好为 S 的前提下,最后每个人付的钱的标准差最小.这里我们约定,每个人支付的钱数可以是任意非负实数,即可以不是1分钱的整数倍.你需要输出最小的标准差是多少.    标准差的介绍:…
C. 结果填空:U型数字 最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212 就是一个U型数字,但是 333, 98, 567, 3131,就是不是U型数字. 现在蒜头君问你,[1,100000] 有多少U型数字? 提示:请不要输出多余的符号. 8193 D. 代码填空:LIS LIS是最长上升子序列.什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段最长严格上升的部分,它不一定要连续. 就像这样:2, 3, 4, 7 和 2,…
一. 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天.这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日. 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日. 高斯获得博士学位的那天日记上标着:8113 请你算出高斯获得博士学位的年…
样例输入: 3 ba a aba 样例输出: 2 3 1 思路一:暴力,只能过50%数据,枚举每一个字符串,内层枚举其他字符串判断是否以这个字符串为后缀 思路二:哈希表,存储每一个后缀的数目,string.substr函数取后缀 substr用法: 代码一: #include <bits/stdc++.h> using namespace std; string s[10010]; int n; int main(){ cin>>n; for(int i = 0;i<n;i+…
标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的. 小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定. 现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物. 取款机只能提供100元面额的纸币.小明想尽可能少取些现金,够用就行了. 你的任务是计算出,小明最少需要取多少现金. 以下是让人头疼的购物单,为了保护隐私,…
一.啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒. 注意:答案是一个整数.请通过浏览器提交答案. 不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等). 分析:此题可用循环暴力求解出结果. 数值先都扩大十倍,方便计算. 全部啤酒罐数:823/23=35.78:全部饮料罐数:823/19=43.31:啤酒和饮料对半罐数:823/42=19.59 设啤酒x,饮料y,则根据上述计算可知…
一. 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的. 小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定. 现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物. 取款机只能提供100元面额的纸币.小明想尽可能少取些现金,够用就行了. 你的任务是计算出,小明最少需要取多少现金. 以下是让人头疼的购物单,为了保护隐私,物…
走廊里有 nn 盏灯,编号依次为 1,2,3,...,n,由学校电路控制中心管理.初始时,所有灯都是关闭的.某黑客入侵了学校电路控制中心,黑客想让灯忽明忽暗,进行了 n 轮操作.第 i 轮操作,会让所有编号为 ii 的倍数的灯状态反转,也就是打开的变为关闭,关闭的变为打开.现在黑客想知道,n 轮操作后,所有亮着的灯的编号之和为多少.因为答案很大,只需输出答案对 10^9+7 取模的结果. 输入格式 一个整数 n,表示灯的个数. 输出格式 一个整数,表示亮着的灯的编号之和对 10^9+7 取模的结…
题目: 蒜头国有 nn 座城市,编号分别为 0,1,2,3,...,n-1.编号为 x 和 y 的两座城市之间如果要修高速公路,必须花费 x|y 个金币,其中|表示二进制按位或. 吝啬的国王想要花最少的价格修建高速公路,使得所有城市可以通过若干条高速公路互相达到.现在请你求出 n=2019 时,一共有多少不同的方案,能让所有城市连通并且造价最低.方案数可能很大,你只需输出对 10^9+7取模的结果. 样例输入 无 样例输出 无 思路: 这一题的主要考点是位运算和最小生成树.分析:根据题意我们可以…
因为做了近三年的初赛题,都对了5题+,所以这次比赛前信心满满,心里想最少水个省二没问题.可我怎么知道今年的套路居然和以前不一样了!一题深搜都没有,想想一周前做的第七届初赛题,10题有3.4题深搜题. 唉,考完看了看,今年第一次参加(应该也是最后一次参加),连省三都不知道能不能水到,小题确定对2题,可能对一题,大题可能对一题.谁能知道写了一大堆代码却错了的感觉(哭). 真的很难受,对不起自己练习过的万行代码,为什么咱就这么凉了.其实也只能怪自己,虽说练习了200左右的题量,但是可以练习更多的,主要…
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; ][]; ,,-,}; ,-,,}; int ans; void dfs(int x,int y,int k) { ;i<;i++) { int fx=x+dx[i]; int fy=y+dy[i]; &&fx<=&&fy>…
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int ans; void dfs(int x,int sum) { ) { ans++; return; } ) return; ;i<=(-sum)/x;i++) { dfs(x+,sum+i*x); } } int main() { ans=; dfs(,);…
D题:马的管辖 二进制枚举方案.判断该方案是否全部能被覆盖,将最优方案存下来并进行剪枝. #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; int vis[15][15]; int ans=0x3f3f3f3f; int dx[]= {1,1,2,2,-1,-1,-2,-2};…
样例输入: 3 1 -2 1 样例输出: 2 方法一: 将环形数组拆分成为普通数组,(通过搬运复制数据到尾部),再求前缀和,找出最大前缀和.因为枚举了每一个起点,所以最大连续和也一定出现在前缀和中... #include<iostream> using namespace std; int n; ]; ]; int main(){ /*freopen("in.txt","r",stdin);*/ cin>>n; ;i<=n;i++){…
1.结果填空:矩阵求和 import java.math.BigInteger; import java.util.HashSet; public class Main{ public static void main(String[] args) { int ct = 1; int mp[][] = new int[102][102]; int n = 101; int ans = 0; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n;…
样例输入: 3 4 5 1 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 5 6 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 10 10 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1…
样例输入: 6 1 9 7 3 5 5 样例输出: 4 思路:贪心,选错贪心思路,只能过一小部分数据,正确贪心思路:从前一半遍历,在后一半中找到比当前元素的两倍大的数(因为这里指针不会后移,所以可以采用双指针) 代码: #include<bits/stdc++.h> using namespace std; int arr[500005]; int n; int main(){ cin>>n; for(int i=0;i<n;i++){ scanf("%d"…
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 9; int f[N], a[N]; int n; //二分查找: 在f数组中查找到第一个比x大的数的下标 int find(int l, int r, int x) { while (l < r) { int mid = (l + r) / 2; if (f[mid] < x) { l = mid + 1; } else { r = mid; } }…
思路:从l枚举到r肯定超时,这时我们要转变思路!题目让我们求一个区间内的d的倍数,只需要求出r/d - l/d就是区间内d倍数的个数. 代码: #include <iostream> using namespace std; long long r = 12302135942453; int l = 1032; int d = 234; int main(){ cout<<r/d - 1032/234<<endl; //左右区间都是闭合的 return 0; }…
找质数 思路:数据大,用线性筛,筛选素数表,最后查表:题目让我们查找相加等于n的两个数,那么我们就枚举1个素数a,在素数表中查找是否存在n-a也是素数. 注意事项:数据大,不宜用输入输出流,cout.cin.endl这些改成printf scanf 代码: #include<cstdio> int t; int n; int prime[1000010]; //筛选素数 打表 void Prime(){ for (int i = 2; i <= 1000000; i++) { prime…
标题:日期问题 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的.更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应. 比如02/03/04,可能是2002年03月04日.2004年02月03日或2004年03月02日. 给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?…
标题:等差素数列 2,3,5,7,11,13,....是素数序列. 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列. 这是数论领域一项惊人的成果! 有这一理论为基础,请你借助手中的计算机,满怀信心地搜索: 长度为10的等差素数列,其公差最小值是多少? 注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字. 比赛的时候有点混乱,结果连暴力都没暴力…
题目1:煤球数目 有一堆煤球,堆成三角棱锥形.具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 解析: 第一层:1个. 第二层:2*3-3=3个. 第三层:3*3-3=6个. 第四层:4*3-3=10个. 代码如下: ,a=; ;i<=;i++){ a=a+i; s=s+a; } printf("%…