程序代码:
#include <stdio.h> void main() { int a, n;//计算a的开n次方 double low, high, middle, x; scanf("%d%d", &a, &n); int i, j, tmp; for (i=1; i<a; i++) { tmp = 1; for (j=0; j<n; j++) { tmp *= i; } if (tmp >= a) { break; } } low = i - 1; high = i; while (1) { middle = (low+high)/2; x = 1; for (j=0; j<n; j++) { x *= middle; } if (x - a < 0.0001 && x - a > -0.0001) { printf("%lf\n", middle); break; } if (x > a) { high = middle; } else { low = middle; } } }
没优化,但是能用。