蓝桥杯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组) 赛后总结
引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...
随机推荐
- MFC DLL中如何响应PreTranslateMessage消息
最近项目中使用到MFC,由于工程是DLL的,在使用ToolTip时碰到非模态对话框无法显示的问题.查了一番资料,发现原因是由于:虽然MFC Regular DLL派生了CWinApp类,并有一个the ...
- dedecmsv5.7sp1远程文件包含漏洞审计
dedecms5.7 sp1版本存在远程文件包含漏洞,在此记录审计复现漏洞过程. 漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当,导致变量覆 ...
- @RequestParam,@RequestBody,@ResponseBody,@PathVariable注解的一点小总结
一.前提知识: http协议规定一次请求对应一次响应,根据不同的请求方式,请求的内容会有所不同: 发送GET请求是没有请求体的,参数会直接拼接保留到url后一并发送: 而POST请求是带有请求体的,带 ...
- 什么是 Opcache,如何使用 Opcache
Opcode 是啥? 我们先看一下 PHP 的执行过程: PHP 初始化执行环节,启动 Zend 引擎,加载注册的扩展模块. 初始化后读取 PHP 脚本文件,Zend 引擎对 PHP 文件进行词法分析 ...
- 听说这四个概念,很多 Java 老手都说不清
Java 是很多人一直在用的编程语言,但是有些 Java 概念是非常难以理解的,哪怕是一些多年的老手,对某些 Java 概念也存在一些混淆和困惑. 所以,在这篇文章里,会介绍四个 Java 中最难理解 ...
- 嘿!Mybatis
简介 什么是Mybatis MyBatis 是一款优秀的持久层框架 它支持自定义 SQL.存储过程以及高级映射. MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作. My ...
- Hbuilder给手机发送短信与拨打电话
前言:业务场景 需要给手机号码拨打电话与发送短信.html5已经提供接口. methods: { Call: function() { var that = this; if(that.ptel == ...
- Pyinstaller打包通用流程
Pyinstaller打包通用流程 前言 什么是Pyinstaller Pyinstaller是用于打包python项目的一个工具, 可以将项目代码打包成可执行文件, 在其他机器上使用. 通俗的说, ...
- error C3861: “back_inserter”: 找不到标识符
Reference:https://blog.csdn.net/taotaoah/article/details/52225364 and https://baike.baidu.com/item/c ...
- c++ 中. 和 ->,波浪号 ~ 符号怎么用 ————很重要
参考:https://www.cnblogs.com/Simulation-Campus/p/8809999.html 1. 用在类中的析构函数之前,表示该函数是析构函数.如类A的析构函数 clas ...