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++的更多相关文章

  1. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  2. 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

    2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...

  3. 2021蓝桥杯省赛B组(C/C++)E.路径【最短路DP】

    2021蓝桥杯省赛B组题目(C/C++)E.路径 最短路径, 因为变化情况比较多, 所以开始想的是深搜, 但是太慢了, 跑不出来, 后来就想着优化一下, 有的地方到另一个地方可能会考虑很多遍, 于是考 ...

  4. 第十届蓝桥杯省赛JavaB组个人题解

    前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改. 试题 A: 组队 ----- 答案:490 [问题描述 ...

  5. 2015年第六届蓝桥杯C/C++B组省赛题目解析

    一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ...

  6. 2015第六届蓝桥杯C/C++ B组

    奖券数目:枚举 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其 ...

  7. Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛

    有错误的或者有问题的欢迎评论 十六进制数1949对应的十进制数 19000互质的数的个数 70044与113148的最大公约数 第十层的二叉树 洁净数 递增序列 最大的元素距离 元音字母辅音字母的数量 ...

  8. 2016年蓝桥杯C/C++B组

    第一次參加蓝桥杯.也是有非常多感触的,时间全然不够写最后一题... 最后一题没做...还有全排序非常重要... 1. 煤球数目 有一堆煤球,堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三 ...

  9. 记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结

    引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...

随机推荐

  1. 阅读源码的利器——Intellij-IDEA-Replace-in-Path-使用技巧

      前言 讲讲宇宙排名第二的开发工具-–IDEA的使用技巧. 搜索/替换 技巧 阅读源码的利器   1.Match case: 如果勾选该按钮,搜索时将区分大小写字母. 2.Preserve case ...

  2. MySQL5.7用户创建及权限管理

    一 用户.权限管理 1.1 用户 作用: 登录,管理数据库逻辑对象 定义: 用户名@'主机值' 主机值可以是主机名或IP地址,主机值中允许使用通配符 root@'10.0.0.%' root@'%' ...

  3. spring-boot autoConfiguration

    一, 第一个待注入类 public class CacheService { } public class LoggerService { } 方法一, 实现接口ImportSelectort pub ...

  4. modelviewset views

    Python 1.4创建user/serializers.py写序列化器 from rest_ framework import serializers from user .models impor ...

  5. 【原创】xenomai内核解析--实时IPC概述

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 目录 1.概述 2.Real-time IPC 2. ...

  6. Python练习题 001:4个数字求不重复的3位数

    听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧. ----------------------------------------------------------------- ...

  7. ACMer不得不会的线段树,究竟是种怎样的数据结构?

    大家好,欢迎阅读周三算法数据结构专题,今天我们来聊聊一个新的数据结构,叫做线段树. 线段树这个数据结构很多人可能会有点蒙,觉得没有听说过,但是它非常非常有名,尤其是在竞赛圈,可以说是竞赛圈的必备技能. ...

  8. 小伙伴问我:如何搭建Maven私服?我连夜肝了这篇实战文章!!

    写在前面 十一假期期间,也有很多小伙伴不忘学习呀,看来有很多小伙伴想通过十一长假来提升自己的专业技能!这不,就有小伙伴在微信上问我:如何搭建Maven私服?让我专门推一篇搭建Maven私服的文章.安排 ...

  9. ansible-playbook文件结构

    ansible-playbook文件结构: 1 --- 2 - name: play1 #指定的playbook名字 3 hosts: webservers #指定主机组 4 remote_user: ...

  10. ansible-基础和安装

    什么是ansible ansible是python中的一套模块,系统中的一套自动化工具,可以用来作系统管理.自动化命令.等任务. ansible优势 (1) ansible是python中的一套完整的 ...