unsigned int f(void)
{
typedef std::set<unsigned int> res_set;
res_set res;
unsigned int digits[9];
unsigned int n1, n2, n3, n4, n5;
for( size_t i = 0 ; i < 9 ; ++i ) digits[i] = i + 1;
for( ; ; )
{
n1 = digits[0];
n3 = n1 * 10 + digits[1];
n4 = digits[2] * 100 + digits[3] * 10 + digits[4];
n2 = digits[1] * 1000 + n4;
n5 = digits[5] * 1000 + digits[6] * 100 + digits[7] * 10 + digits[8];
if( (n1 * n2 == n5) || (n3 * n4 == n5) ) res.insert(n5);
if( !std::next_permutation(digits, digits + 9) ) break;
}
unsigned int t = 0;
for( res_set::const_iterator iter = res.begin() ; iter != res.end() ; ++iter ) t += *iter;
return t;
}
int main()
{
std::cout << f() << std::endl;
return 0;
}
Answer:
|
45228 |