ACWING62. Número feo (para probar la seguridad de la oferta)

Incluimos sólo factores primos 2, 3 y 5 se conoce como el número de serie fea (Ugly Número).

Por ejemplo, 6,8 son varias feo, pero no 14, ya que contiene siete factores primos.

Encontrar el valor enésimo de la fea.

Muestra
de entrada: 5

Salida: 5
Nota: Tradicionalmente tenemos 1 como el primer número feo.

Ideas:
Ideas inducción matemática. Supongamos que el número determinado de la i-ésima feo, para determinar la i + 1-ésimo número de feo, un método debe ser extraído y se multiplica por el número de 2,3,5 existente en un número de feo, el resultado es mayor que el i-ésimo número primo, y el resultado es el mínimo. Después de mantener un número de ubicación que representa el número de números primos multiplicados por una posición correspondiente feo, la posición del resultado mínimo es mayor que los i-ésimo números primos.

class Solution {
public:
    int getUglyNumber(int n) {
        vector<int>ans;
        vector<int>prime(3);
        vector<int>location(3,0);
        prime[0] = 2;prime[1] = 3;prime[2] = 5;
        ans.push_back(1);
        for(int i = 1;i < n;i++) {
            int mi = 2e9;
            for(int j = 0;j < 3;j++) {
                while(prime[j] * ans[location[j]] <= ans[i - 1]) location[j]++;
                mi = min(mi,prime[j] * ans[location[j]]);
            }
            ans.push_back(mi);
        }
        return ans[n - 1];
    }
};
Publicados 844 artículos originales · ganado elogios 28 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/tomjobs/article/details/104965950
Recomendado
Clasificación