一条长度为 l 的街道,在这条街道上放置了n个相同的灯,街道一端位置记为0,每个灯的位置在ai处,问灯的最小照射半径为多少时,才能满足整条街道都能被灯光照到 。
#include<bits/stdc++.h> using namespace std; int main() { int a[1005]; int i, n, l; double ant; cin >> n >> l; for (int i = 0;i < n;i++) { cin >> a[i]; } sort(a, a + n);//这里我为了偷懒用了sort,根据题意考察的是二分法 ant = a[0] > (l - a[n - 1]) ? a[0] : (l-a[n - 1]);//使用条件运算符取较大值 for (int i = 1;i < n;i++) { ant = (a[i] - a[i - 1])/2.0 > ant ? (a[i] - a[i - 1])/2.0 : ant; } printf("%.10f\n", ant);//保留10位小数输出 return 0; }
对于n这个数字,求第k个不能整除n的数字。
#include<bits/stdc++.h> using namespace std; int main() { int t; cin >> t; while (t--) { long long n, k,ans; cin >> n >> k; ans = k+((k-1)/(n-1)); cout << ans<<endl; } return 0; }