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. MFC DLL中如何响应PreTranslateMessage消息

    最近项目中使用到MFC,由于工程是DLL的,在使用ToolTip时碰到非模态对话框无法显示的问题.查了一番资料,发现原因是由于:虽然MFC Regular DLL派生了CWinApp类,并有一个the ...

  2. dedecmsv5.7sp1远程文件包含漏洞审计

    dedecms5.7 sp1版本存在远程文件包含漏洞,在此记录审计复现漏洞过程. 漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当,导致变量覆 ...

  3. @RequestParam,@RequestBody,@ResponseBody,@PathVariable注解的一点小总结

    一.前提知识: http协议规定一次请求对应一次响应,根据不同的请求方式,请求的内容会有所不同: 发送GET请求是没有请求体的,参数会直接拼接保留到url后一并发送: 而POST请求是带有请求体的,带 ...

  4. 什么是 Opcache,如何使用 Opcache

    Opcode 是啥? 我们先看一下 PHP 的执行过程: PHP 初始化执行环节,启动 Zend 引擎,加载注册的扩展模块. 初始化后读取 PHP 脚本文件,Zend 引擎对 PHP 文件进行词法分析 ...

  5. 听说这四个概念,很多 Java 老手都说不清

    Java 是很多人一直在用的编程语言,但是有些 Java 概念是非常难以理解的,哪怕是一些多年的老手,对某些 Java 概念也存在一些混淆和困惑. 所以,在这篇文章里,会介绍四个 Java 中最难理解 ...

  6. 嘿!Mybatis

    简介 什么是Mybatis MyBatis 是一款优秀的持久层框架 它支持自定义 SQL.存储过程以及高级映射. MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作. My ...

  7. Hbuilder给手机发送短信与拨打电话

    前言:业务场景 需要给手机号码拨打电话与发送短信.html5已经提供接口. methods: { Call: function() { var that = this; if(that.ptel == ...

  8. Pyinstaller打包通用流程

    Pyinstaller打包通用流程 前言 什么是Pyinstaller Pyinstaller是用于打包python项目的一个工具, 可以将项目代码打包成可执行文件, 在其他机器上使用. 通俗的说, ...

  9. error C3861: “back_inserter”: 找不到标识符

    Reference:https://blog.csdn.net/taotaoah/article/details/52225364 and https://baike.baidu.com/item/c ...

  10. c++ 中. 和 ->,波浪号 ~ 符号怎么用 ————很重要

    参考:https://www.cnblogs.com/Simulation-Campus/p/8809999.html 1.  用在类中的析构函数之前,表示该函数是析构函数.如类A的析构函数 clas ...