0.題目
1.題解
1.1 二分法
思路
核心思路是用以下程式碼保證精度,題目要求我們保留7位精度,我們為保證可以向後推移兩位,這裡算9位小數(由於mid為l和r不斷地/2, 最後會變成一個越來越小的小數,滿足我們的精度)
double eps = 1e-9;
while (l + eps < r)
程式碼
#include<bits/stdc++.h>
using namespace std;
int m, n;
// 檢測是大於小於
bool check(double mid, int num) {
double ans = 1.0;
while(num > 0){
ans = ans * mid;
num--;
}
if (ans >= n) return true;
else return false;
}
int main() {
cin >> n >> m;
double l = 0, r = n;
double eps = 1e-9;
while (l + eps < r) {
double mid = (l + r) / 2;
if (check(mid, m)) {
r = mid;
} else {
l = mid;
}
}
printf("%.7lf", l);
return 0;
}