using
System;
using
System.Collections;
using
System.Collections.Generic;
class
GFG{
static
bool
isPerfectSquare(
double
x)
{
double
sr = Math.Sqrt(x);
return
((sr - Math.Floor(sr)) == 0);
}
static
int
findSubarraySum(
int
[]arr,
int
n,
int
K)
{
Dictionary<
int
,
int
> prevSum =
new
Dictionary<
int
,
int
>();
int
res = 0;
int
currsum = 0;
for
(
int
i = 0; i < n; i++)
{
currsum += arr[i];
if
(currsum == K)
{
res++;
}
if
(prevSum.ContainsKey(currsum - K))
res += (prevSum[currsum - K]);
if
(prevSum.ContainsKey(currsum))
{
prevSum[currsum]++;
}
else
{
prevSum[currsum] = 1;
}
}
return
res;
}
static
void
countSubarray(
int
[]arr,
int
n,
int
K)
{
for
(
int
i = 0; i < n; i++)
{
if
(isPerfectSquare(arr[i]))
{
arr[i] = 1;
}
else
{
arr[i] = 0;
}
}
Console.Write(findSubarraySum(arr, n, K));
}
public
static
void
Main(
string
[] args)
{
int
[]arr = { 2, 4, 9, 2 };
int
K = 2;
int
N = arr.Length;
countSubarray(arr, N, K);
}
}