蓝桥杯普及题

devtools/2024/10/27 21:14:39/

[蓝桥杯 2024 省 B] 好数

题目描述

一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。

给定一个正整数 N N N,请计算从 1 1 1 N N N 一共有多少个好数。

输入格式

一个整数 N N N

输出格式

一个整数代表答案。

样例 #1

样例输入 #1

24

样例输出 #1

7

样例 #2

样例输入 #2

2024

样例输出 #2

150

提示

样例 1 解释

24 24 24 以内的好数有 1 , 3 , 5 , 7 , 9 , 21 , 23 1,3,5,7,9,21,23 1,3,5,7,9,21,23,一共 7 7 7 个。

数据规模与约定

  • 对于 10 % 10\% 10% 的测试数据, 1 ≤ N ≤ 100 1 \leq N \le 100 1N100
  • 对于全部的测试数据, 1 ≤ N ≤ 1 0 7 1 \le N \leq 10^7 1N107

code:

#include<iostream>
using namespace std;
int n,ans=0;
int q[100000];
bool check(int x){int pos=0;while(x){q[++pos]=x%10;x/=10;}for(int i=1;i<=pos;i++){if(i%2!=0){if(q[i]%2==0) return false;}else{if(q[i]%2!=0) return false;}}return true;
}
int main(){cin>>n;for(int i=1;i<=n;i++){if(check(i)) ans++;}cout<<ans;return 0;
}

[蓝桥杯 2022 省 A] 求和

题目描述

给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1,a2,,an, 求它们两两相乘再相加的和,即

S = a 1 ⋅ a 2 + a 1 ⋅ a 3 + ⋯ + a 1 ⋅ a n + a 2 ⋅ a 3 + ⋯ + a n − 2 ⋅ a n − 1 + a n − 2 ⋅ a n + a n − 1 ⋅ a n S=a_{1} \cdot a_{2}+a_{1} \cdot a_{3}+\cdots+a_{1} \cdot a_{n}+a_{2} \cdot a_{3}+\cdots+a_{n-2} \cdot a_{n-1}+a_{n-2} \cdot a_{n}+a_{n-1} \cdot a_{n} S=a1a2+a1a3++a1an+a2a3++an2an1+an2an+an1an

输入格式

输入的第一行包含一个整数 n n n

第二行包含 n n n 个整数 a 1 , a 2 , ⋯ a n a_{1}, a_{2}, \cdots a_{n} a1,a2,an

输出格式

输出一个整数 S S S,表示所求的和。请使用合适的数据类型进行运算。

样例 #1

样例输入 #1

4
1 3 6 9

样例输出 #1

117

提示

对于 30 % 30 \% 30% 的数据, 1 ≤ n ≤ 1000 , 1 ≤ a i ≤ 100 1 \leq n \leq 1000,1 \leq a_{i} \leq 100 1n1000,1ai100

对于所有评测用例, 1 ≤ n ≤ 2 × 1 0 5 , 1 ≤ a i ≤ 1000 1 \leq n \leq 2\times10^5,1 \leq a_{i} \leq 1000 1n2×105,1ai1000

蓝桥杯 2022 省赛 A 组 C 题。

code:

#include<iostream>//本题可以提公因式,用前缀和算法
using namespace std;//a1*a2+a1*a3+...+a1*an=a1*(a2+a3+...+an)
typedef long long ll;
const int N=2e5;
int main(){int n,q[N];ll s[N];cin>>n;for(int i=1;i<=n;i++){cin>>q[i];s[i]=s[i-1]+q[i];}ll sum=0;for(int i=1;i<=n-1;i++){//an-1是最后一个数sum+=q[i]*(s[n]-s[i]);}cout<<sum;return 0;
}

[蓝桥杯 2023 省 A] 填空问题

题目描述

A. 幸运数

小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 2314 2314 2314 是一个幸运数字,因为它有 4 4 4 个数位,并且 2 + 3 = 1 + 4 2+3=1+4 2+3=1+4。现在请你帮他计算从 1 1 1 100000000 100000000 100000000 之间共有多少个不同的幸运数字。

B. 有奖问答

小蓝正在参与一个现场问答的节目。活动中一共有 30 30 30 道题目,每题只有答对和答错两种情况,每答对一题得 10 10 10 分,答错一题分数归零。

小蓝可以在任意时刻结束答题并获得目前分数对应的奖项,之后不能再答任何题目。最高奖项需要 100 100 100 分,所以到达 100 100 100 分时小蓝会直接停止答题。

已知小蓝最终实际获得了 70 70 70 分对应的奖项,请问小蓝所有可能的答题情况有多少种?

输入格式

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

您可以通过提交答案文件的方式进行提交。你需要将你的答案放在 1.out2.out 中,其中 1.out 对应 A 题的答案,2.out 对应 B 题的答案。

输入文件包含一个字符,代表题目编号(AB),你需要输出对应的答案。

以下模板供参考:

#include<bits/stdc++.h>
using namespace std;char pid;
int main() {cin >> pid;if(pid == 'A')puts("Answer for Problem A");elseputs("Answer for Problem B");return 0;
}

输出格式

提示

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 A-B

code:

#include<iostream>
using namespace std;
int ans=0;
int q[30];
bool check(int x){int pos=0;while(x){q[++pos]=x%10;x/=10;}if(q[1]%2==0){int l=0,r=0;for(int i=1;i<=pos/2;i++){l+=q[i];}for(int i=pos/2+1;i<=pos;i++){r+=q[i];}if(l==r) return true;}return false;
}
int main(){for(int i=1;i<=100000000;i++){if(check(i)) ans++;}cout<<ans;return 0;
}
#include <iostream>
using namespace std;
int ans = 0; 
int main() {int dp[31][10] = { 0 }; dp[0][0] = 1;for (int i = 1; i <= 30; i++) { for (int j = 0; j < 10; j++) { if (j == 0) { for(int a=0;a<10;a++){dp[i][0] += dp[i-1][a];}}else {dp[i][j] += dp[i - 1][j - 1];}}ans += dp[i][7];}cout << ans << endl;return 0;
}

[蓝桥杯 2013 省 B] 翻硬币

题目背景

小明正在玩一个“翻硬币”的游戏。

题目描述

桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果同时翻转左边的两个硬币,则变为 oooo***oooo。现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?

输入格式

两行等长字符串,分别表示初始状态和要达到的目标状态,每行长度小于 1000 1000 1000

数据保证一定存在至少一种方案可以从初始状态和要达到的目标状态。

输出格式

一个整数,表示最小操作步数。

样例 #1

样例输入 #1

**********
o****o****

样例输出 #1

5

样例 #2

样例输入 #2

*o**o***o***
*o***o**o***

样例输出 #2

1

提示

source:蓝桥杯 2013 省 B 组 H 题

code:

#include<iostream>
#include<string>
using namespace std;
string s1,s2;
int res=0;
void turn(char &c){if(c=='*') c='o';else c='*';
}
int main(){cin>>s1>>s2;for(int i=0;i<s1.size();i++){if(s1[i]!=s2[i]){turn(s1[i]);turn(s1[i+1]);res++;}}cout<<res;return 0;
}

[蓝桥杯 2023 省 A] 平方差

题目描述

给定 L , R L,R L,R,问 L ≤ x ≤ R L \leq x \leq R LxR 中有多少个数 x x x 满足存在整数 y , z y,z y,z 使得 x = y 2 − z 2 x=y^2-z^2 x=y2z2

输入格式

输入一行包含两个整数 L , R L,R L,R,用一个空格分隔。

输出格式

输出一行包含一个整数满足题目给定条件的 x x x 的数量。

样例 #1

样例输入 #1

1 5

样例输出 #1

4

提示

【样例说明】
  • 1 = 1 2 − 0 2 1=1^2-0^2 1=1202
  • 3 = 2 2 − 1 2 3=2^2-1^2 3=2212
  • 4 = 2 2 − 0 2 4=2^2-0^2 4=2202
  • 5 = 3 2 − 2 2 5=3^2-2^2 5=3222
【评测用例规模与约定】

对于 40 % 40 \% 40% 的评测用例, L , R ≤ 5000 L,R \leq 5000 L,R5000

对于所有评测用例, 1 ≤ L ≤ R ≤ 1 0 9 1 \leq L \leq R \leq 10^9 1LR109

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 C

暴力code:全t

#include<iostream>
using namespace std;
typedef long long ll;
ll l,r;
int ans=0;
bool check(int x){for(ll i=1;i<=r;i++){for(ll j=0;j<=r;j++){if(x==i*i-j*j)return true;}}return false;
}
int main(){cin>>l>>r;for(ll i=l;i<=r;i++){if(check(i)) ans++;}cout<<ans;return 0;
}

正解:

x=y^2 + z^ 2=(y-z)(y+z);
联立:y-z=a;
y+z=b;
a
b=x;
解得:y=(a+b)/2;
z=(a-b)/2;
得到a+b、a-b必须是偶数
偶数+偶数=偶数,偶数-偶数=偶数
奇数+奇数=偶数,奇数-奇数=偶数
得出a和b必须同时为偶数或者奇数。
也就是x必须存在一对同时为偶数或者为奇数的因数
这句话等价于x是4的倍数,或者是一个奇数(1乘奇数等于奇数)

code:

#include <bits/stdc++.h>
using namespace std;
int main(){int ans=0,l,r;cin>>l>>r;for(int i=l;i<=r;i++){if(i%4==0||i%2!=0)ans++;}cout<<ans;
}

[蓝桥杯 2015 省 B] 移动距离

题目描述

X 星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 $1,2,3, \cdots $ 。

当排满一行时,从下一行相邻的楼往反方向排号。

比如:当小区排号宽度为 6 6 6 时,开始情形如下:

1  2  3  4  5  6
12 11 10 9  8  7
13 14 15 .....

我们的问题是:已知了两个楼号 m m m n n n,需要求出它们之间的最短移动距离。(不能斜线方向移动)

输入格式

输入为 3 3 3 个整数 w , m , n w,m,n w,m,n,空格分开,都在 1 1 1 10000 10000 10000 范围内。

w w w 为排号宽度, m , n m,n m,n 为待计算的楼号。

输出格式

要求输出一个整数,表示 m m m n n n 两楼间最短移动距离。

样例 #1

样例输入 #1

6 8 2

样例输出 #1

4

样例 #2

样例输入 #2

4 7 20

样例输出 #2

5

提示

时限 1 秒, 256M。

蓝桥杯 2015 年省赛 B 组 H 题。

code:

#include<iostream>
#include<cmath>
using namespace std;
pair<int ,int>p1;
pair<int ,int>p2;
int w,m,n;
int main(){cin>>w>>m>>n;p1.first=(m+w-1)/w;p2.first=(n+w-1)/w;if(p1.first%2!=0) p1.second=m%w;//奇数行else p1.second=w-m%w+1;//偶数行if(p2.first%2!=0)  p2.second=n%w;else p2.second=w-n%w+1;int ans=abs(p1.first-p2.first)+abs(p1.second-p2.second);cout<<ans;return 0;
}

[蓝桥杯 2016 国 C] 赢球票

题目描述

某机构举办球票大奖赛。获奖选手有机会赢得若干张球票。

主持人拿出 N N N 张卡片(上面写着 1 ∼ N 1 \sim N 1N 的数字),打乱顺序,排成一个圆圈。

你可以从任意一张卡片开始顺时针数数 $:1,2,3 \cdots $。

如果数到的数字刚好和卡片上的数字相同,则把该卡片收入囊中,从下一个卡片重新数数。

直到再无法收获任何卡片,游戏结束。囊中卡片数字的和就是赢得球票的张数。

比如:

卡片排列是: 1 , 2 , 3 1,2,3 1,2,3

我们从 1 1 1 号卡开始数,就把 1 1 1 号卡拿走。再从 2 2 2 号卡开始,但数的数字无法与卡片对上,

很快数字越来越大,不可能再拿走卡片了。因此这次我们只赢得了 1 1 1 张球票。

还不算太坏!如果我们开始就傻傻地从 2 2 2 3 3 3 号卡片数起,那就一张卡片都拿不到了。

如果运气好,卡片排列是 2 , 1 , 3 2,1,3 2,1,3

那我们可以顺利拿到所有的卡片!

本题的目标就是:已知顺时针卡片序列。

随便你从哪里开始数,求最多能赢多少张球票(就是收入囊中的卡片数字之和)

输入格式

第一行一个整数 N ( N < 100 ) N(N<100) N(N<100),表示卡片数目。

第二行 N N N 个整数,表示顺时针排列的卡片。

输出格式

一行,一个整数,表示最好情况下能赢得多少张球票。

样例 #1

样例输入 #1

3
1 2 3

样例输出 #1

1

样例 #2

样例输入 #2

3
2 1 3

样例输出 #2

6

提示

时限 1 秒, 256M。蓝桥杯 2016 年第七届国赛

code:

#include<iostream>
#include<algorithm>
using namespace std;
int n,ans=0;
int q[110];
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>q[i];}for(int i=1;i<=n;i++){int j=i;//代表目前的卡片int x=1;//代表报的数int sum=0;//拿走的卡片之和int p[110]={0};//标记卡片是否被取走while(true){if(!p[j]){if(q[j]==x){x=0;sum+=q[j];p[j]=1;}x++;}j=j%n+1;//当j=n时j应该赋值为1if(x>n||sum==(n+1)*n/2) break;}ans=max(sum,ans);}cout<<ans;return 0;
}

[蓝桥杯 2017 省 B] k 倍区间

题目描述

给定一个长度为 N N N 的数列, A 1 , A 2 , ⋯ A N A_1,A_2, \cdots A_N A1,A2,AN,如果其中一段连续的子序列 A i , A i + 1 , ⋯ A j ( i ≤ j ) A_i,A_{i+1}, \cdots A_j(i \le j) Ai,Ai+1,Aj(ij) 之和是 K K K 的倍数,我们就称这个区间 [ i , j ] [i,j] [i,j] K K K 倍区间。

你能求出数列中总共有多少个 K K K 倍区间吗?

输入格式

第一行包含两个整数 N N N K K K ( 1 ≤ N , K ≤ 1 0 5 ) (1 \le N,K \le 10^5) (1N,K105)

以下 N N N 行每行包含一个整数 A i A_i Ai ( 1 ≤ A i ≤ 1 0 5 ) (1 \le A_i \le 10^5) (1Ai105)

输出格式

输出一个整数,代表 K K K 倍区间的数目。

样例 #1

样例输入 #1

5 2
1  
2  
3  
4  
5

样例输出 #1

6

提示

时限 2 秒, 256M。蓝桥杯 2017 年第八届

code:

#include<iostream>
using namespace std;
const int N=100010;
int n,k;
long long s[N];
int cnt[N];
int main(){cin>>n>>k;for(int i=1;i<=n;i++){cin>>s[i];s[i]+=s[i-1];}long long res=0;cnt[0]++;//第一个为s[0]for(int i=1;i<=n;i++){res+=cnt[s[i]%k];cnt[s[i]%k]++;}cout<<res;return 0;
}

http://www.ppmy.cn/devtools/129262.html

相关文章

在flask微服务中使用调度器设置定时任务:BackgroundScheduler

在flask微服务中使用调度器设置定时任务&#xff1a;BackgroundScheduler #!/usr/bin/env python3 # -*- coding: UTF-8 -*- # filename: main.pyimport os import unittestfrom app import create_app, db from app.route import route from app.service.score_service impor…

技术成神之路:设计模式(二十二)命令模式

相关文章&#xff1a;技术成神之路&#xff1a;二十三种设计模式(导航页) 介绍 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;允许将请求&#xff08;命令&#xff09;封装为对象&#xff0c;从而使您可以使用不同的请求、队列或记录请求日…

写一个 qq自动回话的程序

这是一个简单的 QQ 自动回话的 Python 程序示例&#xff1a; import random# 定义问题和回答的字典 qa_dict {"你好": ["你好&#xff01;", "嗨&#xff01;", "你好啊&#xff01;"],"你今年多大了": ["我是一个程…

Spring Boot论坛网站:微服务架构的实践

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了论坛网站的开发全过程。通过分析论坛网站管理的不足&#xff0c;创建了一个计算机管理论坛网站的方案。文章介绍了论坛网站的系统分析部分&#xff0c;包括可行性…

人工智能:塑造未来生活与工作的力量

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 引言 随着人工智能技术的不断发展&#xff0c;我们已经看到了它在各行业带来的巨大变革。 在医疗行业中…

linux上部署多个python环境并在jupyterlab搭建各自的虚拟环境virtualenv

linux上部署多个python环境并在jupyterlab搭建各自的虚拟环境virtualenv 一&#xff0c;Linux部署多个python环境 到官网https://www.python.org下载python指定 连接Linux服务器&#xff0c;进入到指定目录下 cd /usr/local/python因为该服务器上会搭建较多版本的python&…

git pull过程中出现there is no tracking information for the current branch

在本地开发的过程中git pull 拉取代码时出现There is no tracking information for the current branch 这个时候证明的是本地代码分支没有远程的跟踪信息也就是说与远程的分支建立联系&#xff0c;所以导致拉取代码无法成功 其实可视化窗口已经给了解决方案 git branch --se…

require和import的区别

require 和 import 是 JavaScript 中用于模块加载的两种不同语法&#xff0c;它们在使用方式、执行时机和兼容性方面有一些重要的区别。此外&#xff0c;懒加载是一种优化技术&#xff0c;可以提高应用的性能。 require 与 import 的区别 1. 语法 require: 语法&#xff1a;c…