Ranking (as of 2015-09-25): 8 out of 228
Language: C++
/* UVa 12027 - Very Big Perfect Squares To build using Visual Studio 2012: cl -EHsc -O2 UVa_12027_Very_Big_Perfect_Squares.cpp */ #include <cstdio> #include <cstring> #include <cmath> int main() { const int sqrts[] = { 0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }; while (true) { const int nr_digits_max = 1001; char N[nr_digits_max + 1], A[nr_digits_max + 1]; scanf("%s", N); if (N[0] == '0') break; int nr_digits = strlen(N), nr_zeros = (nr_digits - 1) / 2, n = N[0] - '0'; if (!(nr_digits & 1)) { n *= 10; n += N[1] - '0'; } A[0] = sqrts[n] + '0'; memset(A + 1, '0', nr_zeros); A[nr_zeros + 1] = '\0'; puts(A); } return 0; }
No comments:
Post a Comment