蓝桥杯2023年第十四届省赛真题-平方差|打表、数学

2024-03-25 01:44

本文主要是介绍蓝桥杯2023年第十四届省赛真题-平方差|打表、数学,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:

2021年的模拟赛有一道相似的题:

1.平方差 - 蓝桥云课 (lanqiao.cn)

对于这道题,一个不错的题解,证明的很清楚:

完整的请看该题题解区的第二条

再加上每个周期第二个数不合法的证明:

用反证法:

需要证明的就是x-y=m时,m为偶数的情况,上面的证明可以证明4的倍数是合法的,但不能证明2的倍数不合法。

任意一个每个周期第二个数可以写成4n+2(n=0,1,2.....),假设它合法,

(2*x-m)*m=4n+2,解得:n=((2*x-m)*m)/4-2/4,很明显((2*x-m)*m)/4是个整数,减去1/2,是一个分数,与n为整数的前提矛盾。证明完毕。

省赛题目链接:

0平方差 - 蓝桥云课 (lanqiao.cn)

c语言网的:蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com)

说明:

  省赛:找到规律这道题就很简单了,但是关键时刻不要犯迷糊,我一下就算1到r有多少个减去l-1个作为结果(不能粗心啊)。实际上这个也是个前缀和?另外这个数据范围太大,用O(n)的循环一个一个判断l到r的数也会超时。

由于不一定能够想到数学上的证明方法,打表观察是一个很重要的方法,可以尝试在小数据范围里面找合法结果,观察分布,可以参考下面的视频:

[蓝桥杯]真题讲解:平方差 (打表+数学)_哔哩哔哩_bilibili

再看一下模拟赛这道题目,因为数据很小,怎么暴力枚举都能过,但是其实也能给人一些启发:

直接枚举平方差结果,而不是枚举1-2021来判断这个数是否满足条件,能减少一层循环。

循环时第二个数必须小于第一个数,否则结果为负,必须从0开始。
第一个数i的枚举范围,从1到2021是比较大的了,因为2021平方-2020平方=4080400,也就是说,2021为第一个数的 可以得到的最小的平方差已经远远超过2021了,那么比2021大的数为第一个数得到的最小平方差肯定是超过2021的,所以肯定不满足条件。
如果进一步缩小条件,可以利用平方差公式(a+b)*(a-b)=a*a-b*b,令a-b=1,平方差结果为2021,可以解得b=1010和a=1011.因此第一个数枚举到1011就可以了,再大的话得到的最小平方差肯定大于2021.

代码如下:

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 2e3+30;
int ans = 0;
int res[N]={0};signed main() {cin.tie(0);cout.tie(0);int l,r;cin>>l>>r;//结论:从1开始,4个为周期,每个周期的第二个数不合法,即不存在平方差等于这个数    
//   for(int i=l;i<=r;i++){
//      if(i%4==2) continue;
//      ans++;
//   }int ll=l-1;int t=ll/4*3+ll%4 -(ll%4>=2?1:0);ans=r/4*3+r%4 -(r%4>=2?1:0)-t;cout<<ans;return 0;
}

 

这篇关于蓝桥杯2023年第十四届省赛真题-平方差|打表、数学的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843471

相关文章

uva 568 Just the Facts(n!打表递推)

题意是求n!的末尾第一个不为0的数字。 不用大数,特别的处理。 代码: #include <stdio.h>const int maxn = 10000 + 1;int f[maxn];int main(){#ifdef LOCALfreopen("in.txt", "r", stdin);#endif // LOCALf[0] = 1;for (int i = 1; i <=

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10916 Factstone Benchmark(打表)

题意是求 k ! <= 2 ^ n ,的最小k。 由于n比较大,大到 2 ^ 20 次方,所以 2 ^ 2 ^ 20比较难算,所以做一些基础的数学变换。 对不等式两边同时取log2,得: log2(k ! ) <=  log2(2 ^ n)= n,即:log2(1) + log2(2) + log2 (3) + log2(4) + ... + log2(k) <= n ,其中 n 为 2 ^

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

计蒜客 Half-consecutive Numbers 暴力打表找规律

The numbers 11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545 and t_i=\frac{1}{2}i(i+1)t​i​​=​2​​1​​i(i+1), are called half-consecutive. For given NN, find the smallest rr which is no smaller than NN

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多