Ranking (as of 2013-06-15): 68 out of 322
Language: C++
/*
UVa 10169 - Urn-ball Probabilities !
To build using Visual Studio 2008:
cl -EHsc -O2 urn_ball_probabilities.cpp
*/
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const int n_max = 1000000;
double p[n_max + 1];
// p[i] is the probability that you have not picked up two red balls
// in all of your pick-ups in i pick-ups
double q[n_max + 1];
// q[i] is number of zeros in probability
// that all of your pick ups has both balls as red in i pick-ups
int main()
{
p[0] = 1.0; q[0] = 0.0;
for (int i = 1; i <= n_max; i++) {
double d = static_cast<double>(i);
p[i] = p[i - 1] * (d * (d + 1.0) - 1.0) / (d * (d + 1.0));
q[i] = q[i - 1] - log10(1.0 / (d * (d + 1.0)));
}
int n;
while (cin >> n)
printf("%.6lf %d\n", 1.0 - p[n], static_cast<int>(q[n]));
return 0;
}
No comments:
Post a Comment