给出两个整数n和k,(2≤n≤70000,1≤k≤n),求出1,2,3,…,n中连续k个数的和,并计算出和为平方数的个数。
例如n=10,k=3。在1,2,…,10中,连续3个数的和有
1+2+3=6
2+3+4=9
3+4+5=12
4+5+6=15
5+6+7=18
6+7+8=21
7+8+9=24
8+9+10=27
其中和为平方数的仅有9,因为9=3×3。
给出两个整数n和k,(2≤n≤70000,1≤k≤n),求出1,2,3,…,n中连续k个数的和,并计算出和为平方数的个数。
例如n=10,k=3。在1,2,…,10中,连续3个数的和有
1+2+3=6
2+3+4=9
3+4+5=12
4+5+6=15
5+6+7=18
6+7+8=21
7+8+9=24
8+9+10=27
其中和为平方数的仅有9,因为9=3×3。
10 3
1
#include<bits/stdc++.h>
using namespace std;
const int N=70010;
int n,k,b[N],ans=0;
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) b[i]=b[i-1]+i;
for(int i=1;i<=n-k+1;i++) {
int t=b[i+k-1]-b[i-1];
if (sqrt(t)==(int)sqrt(t)) ans++;
}
cout<<ans;
return 0;
}