蓝桥杯2020.10.17B组c++
1.门牌制作
暴力即可
#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int i,j,count,len;
char s[4];
count=0;
for(i=1;i<=2020;i++){
len=sprintf(s,"%d",i);
for(j=0;j<len;j++)if(s[j]=='2')count++;
}
cout<<count;
return 0;
}
//624
2.约分分数
#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int i,j,count=0;
for(i=1;i<=2020;i++){
for(j=1;j<=2020;j++){
if(__gcd(i,j)==1)count++;
}
}
cout<<count;
return 0;
}
//2481215
3.蛇形矩阵
找规律即可
俗话说的:从哪里跌倒从哪里爬起来!
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 32 33 34 35 36
37 38 39 40 41 42 43 44 45
求20行中最左边的数和最右边的数,求中位数就是结果
#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int sum1,sum2;
int i;
for(i=1;i<=38;i++)sum1+=i;
for(i=1;i<=39;i++)sum2+=i;
sum1++;
cout<<(sum1+sum2)/2;
return 0;
}
//761
4.跑步训练
#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int i,j,k,week=5;
int sum=0,m=12;
int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
for(i=2000;i<=2020;i++){
if(i%400==0||(i%4==0&&i%100!=0))a[2]=29;
else a[2]=28;
if(i==2020)m=10;
for(j=1;j<=m;j++){
if(i==2020&&j==10)a[j]=1;
for(k=1;k<=a[j];k++){
if(k==1||week==0)sum+=2;
else sum+=1;
week=(week+1)%7;
}
}
}
cout<<sum;
return 0;
}
//8879
5.七段码
大致的想法如下(并查集),仔细审题说的是必须有亮边:
构建二极管图
位运算遍历每一种组合,将每条亮的边的临亮边合并
最后判断亮的边是否根一样
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int tree[7];
int find(int x){
if(x==tree[x])return x;
return tree[x]=find(tree[x]);
}
void combine(int x,int y){
x=find(x);
y=find(y);
if(x!=y)tree[y]=x;
}
int main() {
int g[7][7]={
// a b c d e f g
{0,1,0,0,0,1,0},
{1,0,1,0,0,0,1},
{0,1,0,1,0,0,1},
{0,0,1,0,1,0,0},
{0,0,0,1,0,1,1},
{1,0,0,0,1,0,1},
{0,1,1,0,1,1,0}
};
int i,j,k,s[7];
int num,count=0,root,flag; for(i=1;i<=127;i++){
num=i,j=6;
memset(s,0,sizeof(s));
while(num){
s[j--]=num&1;
num=num>>1;
}
for(j=0;j<7;j++)tree[j]=j;
for(j=0;j<7;j++)if(s[j])for(k=0;k<7;k++)if(g[j][k]&&s[k])combine(j,k); flag=0;
for(j=0;j<7;j++){
if(s[j]){
if(!flag){
root=find(j);
flag=1;
}else if(root!=find(j))break;
}
}
if(j==7)count++;
}
cout<<count;
return 0;
}
6.成绩统计
#include <iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define N 100000
#define INF 0xffffff
using namespace std;
typedef long long LL;
int main() {
int n;
int i,a,b,t;
int ans1,ans2;
cin>>n;
a=b=0;
for(i=0;i<n;i++){
cin>>t;
if(t>=60)a++;
if(t>=85)b++;
}
ans1=round((double)a/n*100);
ans2=round((double)b/n*100);
cout<<ans1<<"%"<<endl;
cout<<ans2<<"%"<<endl;
return 0;
}
7.回文日期
模拟即可;is为判断是否回文,judge为判断是不是ABABBABA型,注意A!=B
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int is(char a[],int s,int e){
if(s>=e)return 1;
if(a[s]==a[e])return is(a,s+1,e-1);
return 0;
}
int judge(char a[]){
char A,B;
A=a[0],B=a[1];
if(A!=B&&a[0]==A&&a[1]==B&&a[2]==A&&a[3]==B&&a[4]==B&&a[5]==A&&a[6]==B&&a[7]==A)return 1;
return 0;
}
int main(){
char a[8],ans1[8],ans2[8];
int y,m,d,month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int flag1=0,flag2=0,len; cin>>a;
y=(a[0]-'0')*1000+(a[1]-'0')*100+(a[2]-'0')*10+a[3]-'0',m=(a[4]-'0')*10+(a[5]-'0'),d=(a[6]-'0')*10+(a[7]-'0');
while(!flag1||!flag2){
if(y%400==0||(y%4==0&&y%100!=0))month[2]=29;
else month[2]=28;
d++;
if(d>month[m]){m++;d=1;}
if(m>12){y++;m=1;}; len=sprintf(a,"%04d%02d%02d",y,m,d);
if(!flag1&&is(a,0,len-1)){strcpy(ans1,a);flag1=1;}
if(!flag2&&judge(a)){strcpy(ans2,a);flag2=1;}
}
cout<<ans1<<endl;
cout<<ans2<<endl;
return 0;
}
8.子串分值和
分析题,考试的时候纯暴力出来的只能完成10^3内的数,之后看网友们的解题,瞬间怀疑自己
主要思想,每个字符只有第一次出现的时候才会作为一个不同的字母,所以我们找出每个字符第一次出现的所以组合,然后累加;
演示过程
ababc
01234
a:[00] [01] [02] [03] [04] //1*5就是5种[ij]就是下标i到j b:[01] [02] [03] [04]
[11] [12] [13] [14] //2*4 就是8种 a:[12] [13] [14]
[22] [23] [24] //2*3 就是6种 b:[23] [24]
[33] [34] //2*2就是4种 c:[04] [14] [24] [34] [44] //5*1就是5种 5+8+6+4+5=28
变量含义:
i是目前遍历到的下标(以0开始)
last[c-'a']是字母c上次出现的下标,
所以能得到本次的组合是[last[a[i]-'a']+1,i]*[i,strlen(a)-1]
所以得出公式count+=(i-(last[a[i]-'a']+1)+1)*(strlen-i);
发现知道这个东西很简单,但是推理过程哇太神奇,感觉十个脑子我都想不出来了,哎这个让我怀疑自我智商
#include<stdio.h>
#include<iostream>
#include<string.h>
#define N 100005
using namespace std;
int main(){
int last[26],i;
long long count=0;
char a[N];
scanf("%s",a);
for(i=0;i<26;i++)last[i]=-1;
for(i=0;i<strlen(a);i++){
count+=(i-(last[a[i]-'a']+1)+1)*(strlen(a)-i);
last[a[i]-'a']=i;
}
printf("%lld",count);
return 0;
}
蓝桥杯2020.10.17B组c++的更多相关文章
- 52-2018 蓝桥杯省赛 B 组模拟赛(一)java
最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...
- 2021蓝桥杯省赛B组(C/C++)E.路径【最短路DP】
2021蓝桥杯省赛B组题目(C/C++)E.路径 最短路径, 因为变化情况比较多, 所以开始想的是深搜, 但是太慢了, 跑不出来, 后来就想着优化一下, 有的地方到另一个地方可能会考虑很多遍, 于是考 ...
- 第十届蓝桥杯省赛JavaB组个人题解
前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改. 试题 A: 组队 ----- 答案:490 [问题描述 ...
- 2015年第六届蓝桥杯C/C++B组省赛题目解析
一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ...
- 2015第六届蓝桥杯C/C++ B组
奖券数目:枚举 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其 ...
- Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
有错误的或者有问题的欢迎评论 十六进制数1949对应的十进制数 19000互质的数的个数 70044与113148的最大公约数 第十层的二叉树 洁净数 递增序列 最大的元素距离 元音字母辅音字母的数量 ...
- 2016年蓝桥杯C/C++B组
第一次參加蓝桥杯.也是有非常多感触的,时间全然不够写最后一题... 最后一题没做...还有全排序非常重要... 1. 煤球数目 有一堆煤球,堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三 ...
- 记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结
引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...
随机推荐
- 正则表达式(代码java版)
目录 元字符 检测工具 普通字符 字符类 预定义字符类 数量词 默认数量词 自定义量词 预定义量词 边界标识符 正则组 简单应用 复杂组序 捕获组 看了好些天的正则表达式,终于有时间来写一篇关于它的博 ...
- (转载)CPU基础知识
本文转载自网络. 如有侵权,请联系处理! 简介 中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Con ...
- Python练习题 016:猴子吃桃
[Python练习题 016] 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到 ...
- 【奇淫巧技】sqlmap绕过过滤的tamper脚本分类汇总
sqlmap绕过过滤的tamper脚本分类汇总
- 题解【[USACO18FEB]New Barns 】
浅谈一下对于这题做完之后的感受(不看题解也是敲不出来啊qwq--) 题意翻译 Farmer John注意到他的奶牛们如果被关得太紧就容易吵架,所以他想开放一些新的牛棚来分散她们. 每当FJ建造一个新牛 ...
- Linux就该这么学28期——开篇
2020.10.03 正式开始系统学习Linux之旅,希望能在老刘的带领下,掌握操作要领. 现将所学记录在此. 学习环境如下: VmwareWorkStation 15 --虚拟机软件 versio ...
- 洛谷P1450 [HAOI2008]硬币购物 背包+容斥
无限背包+容斥? 观察数据范围,可重背包无法通过,假设没有数量限制,利用用无限背包 进行预处理,因为实际硬币数有限,考虑减掉多加的部分 如何减?利用容斥原理,减掉不符合第一枚硬币数的,第二枚,依次类推 ...
- 多测师讲解接口测试 _postman(上)_高级讲师肖sir
Postman 一.Postman介绍 Postman是一个网页调试工具,也可以调试css.html Postman的操作环境 环境:Postman Mac.Windows X32.Windows X ...
- 【译】自动发现 .NET 5 中代码的潜在错误
写代码是一件令人兴奋的事情,特别是对于 .NET 开发人员来说,平台越来越智能化了.我们现在默认在 .NET SDK 中包含丰富的诊断和代码建议.在您需要安装 NuGet 包或其他独立工具来进行更多 ...
- Python面试题-数据库相关
1.mysql如何做分页 mysql数据库做分页用limit关键字,它后面跟两个参数startIndex和pageSize 2.mysql引擎有哪些 innodb和myisam两个引擎,两者区别是 i ...