[蓝桥杯 2023 省 A] 平方差
题目描述
给定 L,RL,R,问 L≤x≤RL≤x≤R 中有多少个数 xx 满足存在整数 y,zy,z 使得 x=y2−z2x=y2−z2。
输入格式
输入一行包含两个整数 L,RL,R,用一个空格分隔。
输出格式
输出一行包含一个整数满足题目给定条件的 xx 的数量。
输入数据 1
1 5
输出数据 1
4
提示
【样例说明】
- 1=12−021=12−02
- 3=22−123=22−12
- 4=22−024=22−02
- 5=32−225=32−22
【评测用例规模与约定】
对于 40%40% 的评测用例,L,R≤5000L,R≤5000;
对于所有评测用例,1≤L≤R≤1091≤L≤R≤109。
第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 C
cpp
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e9+2;
ll l,r;
int main(){
ll num=0;
cin>>l>>r;
ll c=r-l+1;
num+=c/2;
if(c%2==1&&l%2==1)num++;
for(int i=l;i<r;i++){
if(i%4==0){
num+=(r-i)/4+1;
break;
}
}
cout<<num;
}