这道怎么写啊,完全不知道从哪里下手没有思路

问题的根
Time Limit: 1000 ms Memory Limit: 128 MB
问题描述
给定正整数x和n,找出一个整数y,使得y^n最接近x,注意y^n可能小于、等于或者大于x
输入描述
有多组测试数据,每组测试数据是由空格分隔的两个正整数x(1<=x<=1000000)和n(1<=n<=9),当x和n都为0时表示输入的结束。
输出描述
每组测试数据输出一行,即找出的满足要求的整数y。
样例输入
4 3
5 3
1000000 5
0 0
样例输出
1
2
16


#include <stdio.h>
#include <math.h>

int main() {
    int x, n;
    while (scanf("%d%d", &x, &n) == 2 && x != 0 && n != 0) {
        int y = pow(x, 1.0 / n); // 取整数部分
        int a = pow(y, n); // y^n
        int b = pow(y + 1, n); // (y+1)^n
        if (x - a <= b - x) { // 判断哪个更接近x
            printf("%d\n", y);
        } else {
            printf("%d\n", y + 1);
        }
    }
    return 0;
}

思路:枚举y的值,计算y^n与x的差值,找到最小的差值对应的y即可。

注意:y的取值范围为[1, x],n的取值范围为[1, 9],因此y^n的取值范围为[1, x^9],可能会超出int类型的范围,需要使用long long类型。