首页 > 其他分享 >平方差-蓝桥杯

平方差-蓝桥杯

时间:2023-04-18 13:35:26浏览次数:43  
标签:multiple int 平方差 cin 蓝桥 倍数 include

平方差

题目描述

image

题解

由平方差公式:\(y^2-z^2=(y+z)(y-z)\),不妨设\(x=ab\),令$$y+z=a$$ $$y-z=b$$则只要 \(a,b\) 奇偶性相同,\(y,z\) 就有整数解。若 \(x\) 为奇数,则 \(x\) 可以分解为1和 \(x\) ,若 \(x\) 为偶数,则只有当 \(x\) 为4的倍数时,可以被分解为2和 \(\frac{x}{2}\) (这是因为若要满足 \(x\) 为偶数且 \(a,b\) 奇偶性相同,则 \(x\) 必然为偶数个偶数相加得到的,则与4的倍数等价)才能满足条件。
根据该分析,我们可以写出如下代码:

#include<iostream>
#include<vector>
using namespace std;
int l, r, ans = 0;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> l >> r;
    for(int i = l; i <= r; i++)
    {
        if(i & 1)
        {
            ans++;
        }
        else if(i % 4 == 0)
        {
            ans++;
        }
    }
    cout << ans;
    return 0;
}

然而由于数据范围最大为 \(10^9\) ,因此会有部分数据超时。我们做出改进,可以在 \(O(1)\) 的时间里找到 \(L,R\) 中2的倍数和4的倍数。我们将 \(L,R\) 中的总数减去2的倍数,剩下的即为奇数的个数,再加上4的倍数,最后就是所求的答案。

#include<iostream>
#include<vector>
using namespace std;
int l, r, ans = 0;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> l >> r;
    int total = r - l + 1;
    int multiple_2 = r / 2 - (l - 1) / 2;
    int multiple_4 = r / 4 - (l - 1) / 4;
    ans = total - multiple_2 + multiple_4;
    cout << ans;
    return 0;
}

注:\([0,n]\) 中 \(x\) 的倍数的个数为 \(int(\frac{n}{x})\) ,这是因为乘法本质上就是加法。

标签:multiple,int,平方差,cin,蓝桥,倍数,include
From: https://www.cnblogs.com/parallel-138/p/17329227.html

相关文章

  • 2019-第十届蓝桥杯大赛个人赛省赛(软件类)真题 C大学B组
    返回目录 题目一览:A.数列求值B.迷宫C.完全二叉树的权值D.组队E.年号字串F.数的分解G.特别数的和H.等差数列I.后缀表达式J.灵能传输  A.数列求值   B.迷宫   C.完全二叉树的权值   D.组队   E.年号字串   F.数的分解   ......
  • 2019-第十届蓝桥杯大赛个人赛省赛(软件类)真题 C大学A组
    返回目录题目一览:A.平方和B.数列求值C.最大降雨量D.迷宫E.RSA解密F.完全二叉树的权值G.外卖店优先级H.修改数组I.糖果J.组合数问题 A.平方和【问题描述】小明对数位中含有2、0、1、9的数字很感兴趣,在1到40中这样的数包括1、2、9、10至32、39和40,共28个,他们的......
  • [每天例题]蓝桥杯 C语言 饮料换购
    饮料换购题目    题目要求凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。思路分析1.先进行一次if判断,不满足三瓶则直接输出2.满三瓶换一次,但是需要将原来的再加上换购的,然后不断循环,直到再次不符合三瓶。代码#include<stdio.h>i......
  • 第十四届蓝桥杯省赛C++B组--接龙序列
    接龙序列我们称序列中\(a_i\)的首位数字恰好是\(a_{i-1}\)的末尾数字,这样的序列叫做接龙序列,比如12233557,所有长度为1的整数序列都是接龙序列,现在给定一个长度为\(n\)的序列\(a\),请你计算最少从中删除多少个数,可以使得剩下的序列是接龙序列题解:\(DP\)根据题目我们可以转......
  • [每天例题]蓝桥杯 C语言 货物摆放
    货物摆放题目题目要求1.n=L×W×H2.本题的结果为一个整数。3.当n=4n=4时,有以下66种方案:1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1。由此,我们可以知道L、W、H为n的因子思路分析1.由于n过大,所以使用longlongint进行声明。2.先求出n的所有因数,......
  • 第十四届蓝桥杯省赛c/c++大学B组 试题A:日期统计(无深搜暴力求解)
    试题A:日期统计本题总分:5分【问题描述】小蓝现在有一个长度为100的数组,数组中的每个元素的值都在0到9的范围之内。数组中的元素从左至右如下所示:56869161249198236477595038758158618303792705885709919446......
  • 2023第14届蓝桥杯C/C++A组参赛记录+部分题解
    比赛记录早上起得还算早,没吃早餐,我吃早餐会瞌睡,也会变蠢。在门口还没来得及和队里其他同学聊几句就进场了......键盘还是一样的难用,软件有codeblocks和dev,很舒服。今年来参加蓝桥杯的人好多啊......女生也好多。听说今年蓝桥杯有统一的正经培训,不过和我这个被踢出蓝桥杯群的......
  • (已改正)第十四届蓝桥B组省赛回忆版 E: 接龙数列
    目录E:接龙数列原题错误版改正版DP写法E:接龙数列原题时间限制:1s内存限制:256MB题目描述对于一个长度为K的整数数列:A1,A2,...,AK,我们称之为接龙数列当且仅当Ai的首位数字恰好等于Ai−1的末位数字(2≤i≤K)。例如12,23,35,56,61,11是接龙数......
  • 2023年第14届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组
    2023年第14届蓝桥杯大赛软件赛省赛C/C++大学B组试题A:日期统计(5)直接暴力,8个for+优化,2~5分钟跑完。答案:365点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=1e6+10,INF=0x3f3f3f3f;intmon[]={0,31,28,......
  • 2023年4月蓝桥杯B组A到G题解析
    试题A:阶乘求和本题总分:5分【问题描述】令S=1!+2!+3!+...+202320232023!,求S的末尾9位数字。提示:答案首位不为0。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得......