链接:Problem - 7297 (hdu.edu.cn)
思路:
一道简单的数学概率推导题
暴力枚举所有的k找到概率最大时的k即可,时间复杂度O(Tn)
acm思维题比较多,不要望而生畏,多分析思考
代码如下:
#include<iostream>
using namespace std;
const int N = 1e4 + 10;
double s[N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin >> T;
for (int i = 1; i <= 10000; i++)
{
s[i] = s[i-1] + (double)1 / i;
//cout << s[i] << " ";
}
while(T--)
{
int n;
cin >> n;
double ans = (double)1 / n;
int pos = 0;
for (int k = 1; k < n; k++)
{
double t = (double)k / (double)n * (s[n-1] - s[k-1]);
//cout << k << " " << t << endl;
if (t > ans)
{
ans = t;
pos = k;
}
}
cout << pos << endl;
}
return 0;
}