agc047_a Ideas matemáticas de productos enteros A

https://atcoder.jp/contests/agc047/tasks/agc047_a

Título

Ingrese n números de punto flotante hasta 9 posiciones decimales y calcule cuántos productos logarítmicos resultan ser "enteros".

Ideas

De hecho, solo mire el número de factores de cada número 2 y 5, y la suma es mayor que el denominador.
Todos los números se pueden contar por factores de 2 y 5, por lo que la escala será pequeña (menos de 15 * 15)
.

Código

void solve(int kaseId = -1) {
    
    
    int n;
    cin >> n;
    map<pair<int, int>, int> cnt;
    for (int i = 1; i <= n; ++i) {
    
    
        long double ai;
        cin >> ai;
        ll val = (ll) (ai * 1000000000.0 + 0.5);
        ll cnt2 = 0;
        ll cnt5 = 0;
        while (val % 2 == 0) {
    
    
            cnt2++;
            val /= 2;
        }
        while (val % 5 == 0) {
    
    
            cnt5++;
            val /= 5;
        }
        cnt[make_pair(cnt2, cnt5)]++;
    }

    ll ans = 0;
    for (const auto &pi: cnt) {
    
    
        for (const auto &pj: cnt) {
    
    
            if (pi.first.first + pj.first.first >= 18 &&
                pi.first.second + pj.first.second >= 18) {
    
    
                if (pi == pj) {
    
    
                    ans += pi.second * (pi.second - 1ll);
                } else {
    
    
                    ans += pi.second * 1ll * pj.second;
                }
            }
        }
    }
//    debug(cnt);
    cout << ans / 2 << endl;
}

posdata

Resulta que las preguntas de inicio de sesión son muy difíciles. Perdóneme.

Supongo que te gusta

Origin blog.csdn.net/Tighway/article/details/108028911
Recomendado
Clasificación