用C语言实现给定正整数x和n,找出一个整数y,使得y^n最接近x,注意y^n可能小于、等于或者大于x。 输入描述 有多组测试数据,每组测试数据是由空格分隔的两个正整数x(1<=x<=1000000)和n(1<=n<=9),当x和n都为0时表示输入的结束。 输出描述 每组测试数据输出一行,即找出的满足要求的整数y。
时间: 2024-03-20 09:40:10 浏览: 126
c语言南开100题word版
好的,以下是用 C 语言实现的代码,与 Python 实现的思路基本相同:
```c
#include <stdio.h>
#include <math.h>
int main() {
int x, n;
while (scanf("%d%d", &x, &n) == 2 && x != 0 && n != 0) {
int low = 0, high = x;
int mid, num;
while (low <= high) {
mid = (low + high) / 2;
num = pow(mid, n);
if (num < x) {
low = mid + 1;
} else if (num > x) {
high = mid - 1;
} else {
break;
}
}
// 找到最接近 x 的 y 的值
int y;
if (pow(mid, n) >= x) {
y = mid - 1;
} else {
y = mid;
}
printf("%d\n", y);
}
return 0;
}
```
注意,在 C 语言中,求幂次可以使用 `pow` 函数,需要包含头文件 `math.h`。
输入样例:
```
2 2
3 2
10 3
0 0
```
输出样例:
```
1
2
2
```
阅读全文