本文主要是介绍蓝桥杯2023年-平方差(数学),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定 L, R,问 L ≤ x ≤ R 中有多少个数 x 满足存在整数 y,z 使得 x = y2 − z2。
思路
首先想到:x²-y²=(x+y)(x-y),首先如果是奇数2*n+1,肯定可以分成(n+1+n)*(n+1-n)的形式,所以奇数是肯定可行的,然后是偶数2*n,如果凑成(x+y)*(x-y)的形式,则(x+y)或(x-y)中的一个肯定是偶数,并且当一个是偶数时,另一个也肯定是偶数。所以肯定是4的倍数的偶数才符合条件。
所以可以直接算出从1到n中有多少个数是4的倍数(n/4),有多少个数是奇数((n+1)/2)。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{int a,b;cin>>a>>b;a--;//不包含的范围,所以要去除边界。int l=a/4+(a+1)/2;int r=b/4+(b+1)/2;cout<<r-l;
}
这篇关于蓝桥杯2023年-平方差(数学)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!