// @BEGIN_OF_SOURCE_CODE /* @JUDGE_ID: 17243NT 136 C++ "O(n^2) algorithm" */ // Send to judge@uva.es #include const int INF = 1000000000; int main() { int i, j; int ugly[1500]; ugly[0] = 1; for(i = 1; i < 1500; i++) { ugly[i] = INF; for(j = 0; j < i; j++) { if(ugly[j] * 2 > ugly[i - 1]) { if(ugly[j] * 2 < ugly[i]) ugly[i] = ugly[j] * 2; } else if(ugly[j] * 3 > ugly[i - 1]) { if(ugly[j] * 3 < ugly[i]) ugly[i] = ugly[j] * 3; } else if(ugly[j] * 5 > ugly[i - 1]) { if(ugly[j] * 5 < ugly[i]) ugly[i] = ugly[j] * 5; } } } cout << "The 1500'th ugly number is " << ugly[1499] << ".\n"; return 0; } // @END_OF_SOURCE_CODE