Calcular la suma de n números multiplicados por dos

problema

\ (Se sabe que da una secuencia a de longitud n, cada valor en a es a_i, encuentra la suma de todas las coincidencias por pares (no multiplicada por sí misma) \)

solución

\ (1) Simple para la idea de bucle para realizar emparejamiento por pares \) \ (O (n ^ 2) \)

for(int i=1;i<n;i++){
	for(int j=i+1;j<=n;j++){
        res += a[i]*a[j];
    }
}

\ (2) Resolver por suma de prefijo \) \ (O (n) \)

Por ejemplo:
\ (a [1] * a [2] + ... + a [1] * a [n] = a [1] * (a [2] + .. + a [n]); \)
\ (a [2] * a [3] + ... + a [2] * a [n] = a [2] * (a [3] + .. + a [n]); // así fórmula El niño saldrá \)

\ (\ sum_ {i = 1} ^ na [i] * (sum-a [i]); sum 为 \ sum_ {i = 1} ^ na [i] \)

for(int i=1;i<n;i++){
    res += a[i]*(sum-a[i]);
}

Supongo que te gusta

Origin www.cnblogs.com/Tianwell/p/12732824.html
Recomendado
Clasificación