[Leetcode] #263#264 Ugly Number I & II

xiaoxiao2021-02-28  85

Discription

Write a program to check whether a given number is an ugly number.

Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 6, 8 are ugly while14 is not ugly since it includes another prime factor 7.

Note that 1 is typically treated as an ugly number.

Solution

bool isUgly(int num) { while (num % 2 == 0 && num) num /= 2; while (num % 3 == 0 && num) num /= 3; while (num % 5 == 0 && num) num /= 5; return num == 1; }

Discription

Write a program to find the n-th ugly number.

Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.

Note that 1 is typically treated as an ugly number, and n does not exceed 1690.

Solution

int nthUglyNumber(int n) { vector<int> res(n, 1); int index2 = 0, index3 = 0, index5 = 0; for (int i = 1; i<n; i++) { res[i] = min(min(res[index2] * 2, res[index3] * 3), res[index5] * 5); if (res[i] == res[index2] * 2) index2++; if (res[i] == res[index3] * 3) index3++; if (res[i] == res[index5] * 5) index5++; } return res[n - 1]; }

GitHub-Leetcode: https://github.com/wenwu313/LeetCode

转载请注明原文地址: https://www.6miu.com/read-73877.html

最新回复(0)