Ranking (as of 2013-02-05): 121
Language: C++
/* UVa 11526 - H(n) To build using Visual Studio 2008: cl -EHsc -O2 UVa_11526_Hn.cpp */ #include <cstdio> #include <cmath> long long H(int n) { if (n < 0) return 0; if (n == 1) return 1; long long result = n; int cur_divisor = 2, cur_quoitent, prev_divisor = 1, prev_quoitent = n; while (true) { cur_quoitent = n / cur_divisor; result += static_cast<long long>(prev_quoitent - cur_quoitent) * prev_divisor; if (cur_quoitent >= cur_divisor) result += cur_quoitent; if (cur_quoitent <= cur_divisor) break; prev_divisor = cur_divisor++; prev_quoitent = cur_quoitent; } return result; } int main() { int t; scanf("%d",& t); while (t--) { int n; scanf("%d", &n); printf("%lld\n", H(n)); } return 0; }
No comments:
Post a Comment