[编程题] 赛马
在一条无限长的跑道上,有N匹马在不同的位置上出发开始赛马。当开始赛马比赛后,所有的马开始以自己的速度一直匀速前进。每匹马的速度都不一样,且全部是同样的均匀随机分布。在比赛中当某匹马追上了前面的某匹马时,被追上的马就出局。 请问按以上的规则比赛无限长的时间后,赛道上剩余的马匹数量的数学期望是多少 输入描述: 每个测试输入包含1个测试用例 输入只有一行,一个正整数N 1 <= N <= 1000 输出描述: 输出一个浮点数,精确到小数点后四位数字,表示剩余马匹数量的数学期望 输入例子1: 1 2 输出例子1: 1.0000 1.5000
#include<bits/stdc++.h> #include<iomanip> using namespace std; /* #include <iostream> #include <iomanip> using namespace std; int main( void ) { const double value = 12.3456789; cout << value << endl; // 默认以6精度,所以输出为 12.3457 cout << setprecision(4) << value << endl; // 改成4精度,所以输出为12.35 cout << setprecision(8) << value << endl; // 改成8精度,所以输出为12.345679 cout << fixed << setprecision(4) << value << endl; // 加了fixed意味着是固定点方式显示,所以这里的精度指的是小数位,输出为12.3457 cout << value << endl; // fixed和setprecision的作用还在,依然显示12.3457 cout.unsetf( ios::fixed ); // 去掉了fixed,所以精度恢复成整个数值的有效位数,显示为12.35 cout << value << endl; cout.precision( 6 ); // 恢复成原来的样子,输出为12.3457 cout << value << endl; } */ int main(){ int N; double result = 1.0; for(int i = 2;i<=N;i++){ result += 1/double(i); } cout<<fixed<<setprecision(4)<<result<<endl; }