Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
127887 | zhangyang | 切割金属棍 | C++ | 编译错误 | 0 | 0 MS | 0 KB | 746 | 2024-01-25 10:52:11 |
#include<iostream> using namespace std; int arr[10005],n,m; int binary_search(int start, int end, int key) { int ret = -1; // 未搜索到数据返回-1下标 int mid; while (start <= end) { mid = start + ((end - start) >> 1); // 直接平均可能会溢出,所以用这个算法 if (arr[mid] < key) start = mid + 1; else if (arr[mid] > key) end = mid - 1; else { // 最后检测相等是因为多数搜索情况不是大于就是小于 ret = mid; break; } } return ret; // 单一出口 } signed main(){ cin>>n; for(int i=1;i<=n;i++) cin>>arr[i]; cin>>m; int k=(double)binary_search(1,n,m)*100; cout<< fixed << setprecision(2)<<(double)k/100; return 0; }