코드
회문 숫자 식별하기
ehei
2012. 1. 14. 23:25
// 메타 템플릿 버전. 당연히 초고속인데 리터럴 상수만 쓸 수 있는게 아쉽...
template< int result >
struct ReverseMeta< 0, result >
{ enum { value = result }; };template< int input, int result = 0 >
struct IsPalindromeMeta{ enum { value = (input == ReverseMeta< input, result >::value) }; };
// 람다 재귀 버전. 어쨌든 템플릿이니까 그래도 좀 낫겠지
return 0 == quotient ? result * 10 + input : func(quotient, result * 10 + input % 10);
};
do
{
const int quotient = input % 10;
*forwardPointer = quotient;
++forwardPointer;*backwardPointer = quotient;
--backwardPointer;input /= 10;
} while (0 < input);return 0 == memcmp(array, backwardPointer + 1, sizeof(*array) * (forwardPointer - array));
}