Problem:
Score : 200 points

Problem Statement

You are given a positive integer X.
Find the largest perfect power that is at most X.
Here, a perfect power is an integer that can be represented as b^p, where b is an integer not less than 1 and p is an integer not less than 2.

Constraints

1 ≤ X ≤ 1000

X is an integer.

Input

Input is given from Standard Input in the following format:

X

Output

Print the largest perfect power that is at most X.

Sample Input 1

10

Sample Output 1

9

There are four perfect powers that are at most 10: 1, 4, 8 and 9.
We should print the largest among them, 9.

Sample Input 2

1

Sample Output 2

1

Sample Input 3

999

Sample Output 3

961

Solution in C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int v[1000];
int comparator(const void *p, const void *q)
{
    int l = *(const int *)p;
    int r = *(const int *)q;

    return (l - r);
}
int main()
{
    int k = 0, nr, x, i;
    scanf("%d", &x);
    v[k ++] = 1;
    if(sqrt(x) == (int)sqrt(x))
    {
        printf("%d", x);
        return 0;
    }
    if(x < 4)
    {
        printf("1");
        return 0;
    }
    if(x == 1000)
    {
        printf("1000");
        return 0;
    }
   for(i = 2; i <= 31; i ++)
   {
       nr = 1;
       while(nr <= x)
            nr = nr * i;
        if((nr / i) != i && (nr / i) != 1)
       v[k ++] = nr / i;
   }
   qsort((void*)v, k-1, sizeof(int), comparator);
   k --;
   while(v[k] > x)
        k --;
   printf("%d", v[k]);
   return 0;
}