Ranking (as of 2015-09-14): 3 out of 433
Language: C++
/* UVa 11666 - Logarithms To build using Visual Studio 2012: cl -EHsc -O2 UVa_11666_Logarithms.cpp */ #include <cstdio> #include <cmath> #include <climits> /* n / exp(L) = 1 - abs(x) < 1 if x >= 0 n / exp(L) = 1 - x < 1 else if x < 0 n / exp(L) = 1 - x > 1 else n / exp(L) = 1 */ int main() { const int L_max = 21 /* static_cast<int>(log(static_cast<double>(INT_MAX))) */; double exp_Ls[L_max + 1]; for (int i = 0; i <= L_max; i++) exp_Ls[i] = exp(static_cast<double>(i)); while (true) { int n; scanf("%d", &n); if (!n) break; for (int L = 0; L <= L_max; L++) { double x = 1.0 - n / exp_Ls[L]; if (fabs(x) < 1.0 && (n < exp_Ls[L] && x > 0.0 || n > exp_Ls[L] && x < 0.0 || n == exp_Ls[L] && x == 0.0)) { printf("%d %.8lf\n", L, x); break; } } } return 0; }
No comments:
Post a Comment