蓝桥杯

【2015蓝桥杯省赛】C++ B组试题

主宰稳场 提交于 2019-11-28 20:31:33
1.奖券数目 作答:52488,正确 #include <iostream> using namespace std; bool check(int x) { int a[10] = { 0 }; while (x) { a[x % 10]++; x /= 10; } if (a[4] != 0)return false; return true; } int main() { int res = 0; for (int i = 10000; i <= 99999; i++) { if (check(i)) { res++; } } cout << res << endl; return 0; } View Code 2.星系炸弹 作答:2017-8-5,正确 算法基本功,日期判断 -_-。 #include <iostream> using namespace std; int main() { //根据2014年的来写的 int days[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 }; int year = 2014, month = 11, day = 9; for (int i = 0; i < 1000; i++) { cout << year << " " << month << " " << day << ": " <

2015年蓝桥杯B组C/C++决赛题目

孤街醉人 提交于 2019-11-28 20:31:14
2015年第六届蓝桥杯B组C/C++国赛题目 点击查看2015年第六届蓝桥杯B组C/C++国赛题解 1.积分之迷 小明开了个网上商店,卖风铃。共有3个品牌:A,B,C。 为了促销,每件商品都会返固定的积分。 小明开业第一天收到了三笔订单: 第一笔:3个A + 7个B + 1个C,共返积分:315 第二笔:4个A + 10个B + 1个C,共返积分:420 第三笔:A + B + C,共返积分.... 你能算出第三笔订单需要返积分多少吗? 请提交该整数,不要填写任何多余的内容。 2.完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形。 历史上,人们花了很久才找到了若干完美正方形。比如:如下边长的22个正方形 2 3 4 6 7 8 12 13 14 15 16 17 18 21 22 23 24 26 27 28 50 60 如【图1.png】那样组合,就是一种解法。此时, 紧贴上边沿的是:60 50 紧贴下边沿的是:26 28 17 21 18 22阶完美正方形一共有8种。下面的组合是另一种: 2 5 9 11 16 17 19 21 22 24 26 30 31 33 35 36 41 46 47 50 52 61 如果告诉你该方案紧贴着上边沿的是从左到右依次为:47 46 61, 你能计算出紧贴着下边沿的是哪几个正方形吗?

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

空扰寡人 提交于 2019-11-28 19:33:51
2016年第七届蓝桥杯B组C/C++决赛题解 2016年蓝桥杯B组C/C++决赛题目(不含答案) 1.一步之遥 枚举解方程,或者套模板解线性方程 #include<bits/stdc++.h> using namespace std; int main(){ int ans = 0x3f3f3f3f; for(int a=0;a<=100;a++){ for(int b=0;b<=100;b++){ if(97*a - 127*b == 1){ ans = min(ans,a+b); } } } cout<<ans<<endl; return 0; } //97 2.凑平方数 思路: 分成几组? k组 1 ~ 10; 每组:dfs搜索0~9这几个没用过的数; if 完全平方数 1.x+1 2.继续加值 (0不能作为第一个数 单独考虑) 到了k组 先对结果排序存到vector数组中 再set去重(因为递归回溯 结果有大量重复) 注意:必须用long long...用int会出错 因为int的取值范围为:-2147483648 ~ 2147483647 网上有全排列后 再dfs的方法,这样不用再回溯打乱顺序,博客地址: https://blog.csdn.net/riba2534/article/details/72480145 #include<bits/stdc++.h>

蓝桥杯_买不到的数目

只愿长相守 提交于 2019-11-28 18:33:04
问题描述 小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 输入格式 两个正整数,表示每种包装中糖的颗数(都不多于1000) 输出格式 一个正整数,表示最大不能买到的糖数 样例输入1 4 7 样例输出1 17 样例输入2 3 5 样例输出2 7 代码: #include<stdio.h> int main() { int a[100001]; int n,m,i,j; scanf("%d %d",&n,&m); a[n]=1; a[m]=1; for(i=0;i<n*m;i++) { for(j=0;j<n*m;j++) { if(i*n+j*n>=100001) break; a[i*n+j*m]=1; } } for(i=n*m-1;i>=0;i--)//从后往前碰到的第一个就是最大的 { if(!a[i]) { printf("%d",i); break; } } return 0; } 来源: CSDN 作者: jing2xin1bi5xin 链接: https:

蓝桥杯 反置数 数论

强颜欢笑 提交于 2019-11-27 00:02:41
题目描述 一个整数的“反置数”指的是把该整数的每一位 数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数是 5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。要求:由 于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。 输入 输入只有一行,包括两个整数,中间用空格隔开。 输出 输出只有一行,即相应的结果。 样例输入 435 754 样例输出 199 知识点:主要是明白了字符串和int的转换,stringstream在头文件sstream,它可以投入任何东西,产出任何东西. #include<iostream> #include<sstream> #include<algorithm> using namespace std; int get(string s) { reverse(s.begin(),s.end()); //012 12是一样的 stringstream ss; ss<<s; int a; ss>>a; return a; } int main() { string s1,s2; cin>>s1>>s2; int sum1=get(s1); int sum2=get

蓝桥杯 友好数 数论

大兔子大兔子 提交于 2019-11-27 00:00:27
题目描述 有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的。例如: 9的约数和有:1+3=4 4的约数和有:1+2=3 所以9和4不是友好的。 220的约数和有:1 2 4 5 10 11 20 22 44 55 110=284 284的约数和有:1 2 4 71 142=220 所以220和284是友好的。 编写程序,判断两个数是否是友好数。 数据规模和约定 两个整数都小于10000 输入 一行,两个整数,由空格分隔 输出 如果是友好数,输出" yes" ,否则输出" no" ,注意不包含引号。 样例输入 220 284 样例输出 yes 思路:求约数,这是一个比较重要的知识点 #include<iostream> using namespace std; int get(int n) { int sum=0; for(int i=1;i<=n/i;++i){ if(n%i==0){ sum+=i; if(n/i!=i){ sum+=n/i; } } } sum-=n; return sum; } int main() { int s1,s2; cin>>s1>>s2; if(s1==get(s2)&&s2==get(s1))cout<<"yes"<<endl; else cout<<"no"<<endl; return 0; } 来源:

蓝桥杯 传球游戏 动态规划

冷暖自知 提交于 2019-11-26 23:57:54
题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。 聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次以后,又回到小蛮手里。两种传球的方法被视作不同的方 法,当且仅当这两种方法中,接到球的同学按接球顺序组成的序列是不同的。比如有3个同学1号、2号、3号,并假设小蛮为1号,球传了3次回到小蛮手里的方 式有1-> 2-> 3-> 1和1-> 3-> 2-> 1,共2种。 数据规模和约定 100%的数据满足:3< =n< =30,1< =m< =30 输入 共一行,有两个用空格隔开的整数n,m(3< =n< =30,1< =m< =30)。 输出 t共一行,有一个整数,表示符合题意的方法数。 样例输入 3 3 样例输出 2 思路:动态规划f[i][j]表示的集合是第i次到j的方案,记录的是数量,状态转移显然是f[i][j]=f[i-1][at(j-1)]+f[i-1][at(j+1)] #include<iostream> using namespace