Description
给出两个整数n和k(2<=n<=7000,1<=k<=n),求出1,2,3,4......n中连续k个数的和,并计算出和为平方数的个数。
例如n=10,k=3。在1,2,3.....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
其中和为平方数的仅有9,因为9=3*3。
Input
两个整数n和k
Output
一个整数,即1,2,3,4......n中连续k个数的和为平方数的个数。
Samples
输入数据 1
10 3
Copy
输出数据 1
1
Copy
Limitation
1s, 1024KiB for each test case.
思路:
直接枚举。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k,qz=0,sum=0,q[300005];
cin>>n>>k;
for(int i=1;i<=n;i++){
qz+=i;
q[i]=qz;
}
for(int i=1;i+k<=n;i++){
int s=q[i+k]-q[i];
if(floor(sqrt(s))==sqrt(s)) sum++;
}
cout<<sum;
return 0;
}