fork(2) download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. unsigned int min(unsigned int a, unsigned int b, unsigned int c)
  5. {
  6. if(a<b && a<c)
  7. return a;
  8. else if(b<c)
  9. return b;
  10. else
  11. return c;
  12. }
  13.  
  14. unsigned int nthUgly(unsigned int n)
  15. {
  16. unsigned int dp[n]; // To store ugly numbers
  17. unsigned int p2 = 0, p3 = 0, p5 = 0;
  18. unsigned int next_ugly;
  19.  
  20. dp[0] = 1;
  21. for (int i=1; i<n; i++)
  22. {
  23. next_ugly = min(dp[p2] * 2, dp[p3] * 3, dp[p5] * 5);
  24. dp[i] = next_ugly;
  25. if (next_ugly == dp[p2]*2)
  26. p2 = p2+1;
  27. if(next_ugly == dp[p3]*3)
  28. p3 = p3+1;
  29. if(next_ugly == dp[p5]*5)
  30. p5 = p5+1;
  31. }
  32. return next_ugly;
  33. }
  34.  
  35.  
  36. int main()
  37. {
  38. unsigned int n;
  39. scanf("%d", &n);
  40. printf("%d", nthUgly(n));
  41. return 0;
  42. }
Success #stdin #stdout 0s 9424KB
stdin
150
stdout
5832