-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpSq.c
47 lines (43 loc) · 828 Bytes
/
pSq.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <limits.h>
int minSqFactorCount(int num)
{
int maxSqrt = 1, count = 0, minCount = INT_MAX, sqrt, numT;
// Find max square.
while (num >= maxSqrt * maxSqrt)
{
++maxSqrt;
}
--maxSqrt;
for (; maxSqrt > 0; --maxSqrt)
{
sqrt = maxSqrt;
numT = num;
count = 0;
// Turncate num.
while (numT > 0)
{
if (numT >= sqrt * sqrt)
{
numT -= sqrt * sqrt;
++count;
}
else
{
--sqrt;
}
}
if (count < minCount)
{
minCount = count;
}
}
return minCount;
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%d", minSqFactorCount(n));
return 0;
}