Ranking (as of 2013-11-14): 316 out of 678
Language: C++
/* UVa 11344 - The Huge One To build using Visual Studio 2012: cl -EHsc -O2 UVa_11344_The_Huge_One.cpp */ #include <cstdio> #include <cstring> bool is_multiple_of_1(const char* number, int length) { return true; } bool is_multiple_of_2(const char* number, int length) { return ((number[length - 1] - '0') % 2) ? false : true; } bool is_multiple_of_3(const char* number, int length) { int s = 0; for (int i = 0; i < length; i++) s += number[i] - '0'; return (s % 3) ? false : true; } bool is_multiple_of_4(const char* number, int length) { int s = number[length - 1] - '0'; if (length > 1) s += (number[length - 2] - '0') * 10; return (s % 4) ? false : true; } bool is_multiple_of_5(const char* number, int length) { return ((number[length - 1] - '0') % 5) ? false : true; } bool is_multiple_of_6(const char* number, int length) { return is_multiple_of_2(number, length) && is_multiple_of_3(number,length); } bool is_multiple_of_7(const char* number, int length) { int s = 0; for (int i = 0, j = length - 1; j >= 0; i++) { int k = number[j--] - '0'; if (j >= 0) k += (number[j--] - '0') * 10; if (j >= 0) k += (number[j--] - '0') * 100; if (i & 1) s -= k; else s += k; } return (s % 7) ? false : true; } bool is_multiple_of_8(const char* number, int length) { int s = number[length - 1] - '0'; if (length > 1) { s += (number[length - 2] - '0') * 10; if (length > 2) s += (number[length - 3] - '0') * 100; } return (s % 8) ? false : true; } bool is_multiple_of_9(const char* number, int length) { int s = 0; for (int i = 0; i < length; i++) s += number[i] - '0'; return (s % 9) ? false : true; } bool is_multiple_of_10(const char* number, int length) { return number[length - 1] == '0'; } bool is_multiple_of_11(const char* number, int length) { int s = 0; for (int i = 0, j = length - 1; j >= 0; i++, j--) { int k = number[j] - '0'; if (i & 1) s -= k; else s += k; } return (s % 11) ? false : true; } bool is_multiple_of_12(const char* number, int length) { return is_multiple_of_3(number, length) && is_multiple_of_4(number, length); } int main() { typedef bool (*IS_MULTIPLE_OF_N_FUNCTION)(const char* number, int length); const IS_MULTIPLE_OF_N_FUNCTION is_multiple_of_n_functions[] = { NULL, is_multiple_of_1, is_multiple_of_2, is_multiple_of_3, is_multiple_of_4, is_multiple_of_5, is_multiple_of_6, is_multiple_of_7, is_multiple_of_8, is_multiple_of_9, is_multiple_of_10, is_multiple_of_11, is_multiple_of_12 }; int N; scanf("%d", &N); while (N--) { const int M_digits_max = 1001; char M[M_digits_max + 1]; scanf("%s", M); int length = strlen(M), S; scanf("%d", &S); bool wonderful = true; while (S--) { int number; scanf("%d", &number); if (wonderful && !is_multiple_of_n_functions[number](M, length)) wonderful = false; } printf("%s - %s.\n", M, ((wonderful) ? "Wonderful" : "Simple")); } return 0; }
No comments:
Post a Comment