CCF-CSP 201403-1 Número inverso

Descripción del problema
  Hay N enteros distintos de cero y diferentes. Escriba un programa para averiguar cuántos pares de opuestos (aya son opuestos).
Formato de entrada La
  primera línea contiene un entero positivo N. (1 ≤ N ≤ 500).
  La segunda línea es N enteros distintos de cero separados por un solo espacio, el valor absoluto de cada número no excede 1000, para asegurar que estos enteros sean diferentes.
El formato de salida genera
  solo un número entero, es decir, cuántos pares de números opuestos se incluyen en estos N números.
Entrada de muestra
5
1 2 3 -1 -2
Salida de muestra
2

Resumen
de la experiencia Dado que el valor absoluto de cada número no excede 1000, entonces se puede crear una matriz de longitud 1001 para almacenar datos.
Como cada número es diferente y distinto de cero, si la suma de los dos números es 0, debe ser un par de números opuestos.
De esta manera, el valor absoluto de cada número se puede usar como un subíndice, y el valor es el valor original más este número. Si el resultado es 0 después de la suma, entonces es un par de números opuestos.

Código C ++:

#include<bits/stdc++.h>
using namespace std;
int num[1001];
int main() {
	int n,cnt = 0;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		int a;
		scanf("%d",&a);
		num[abs(a)] += a;
		if(0 == num[abs(a)]){
			cnt++;
		}
	}
	printf("%d",cnt);
	return 0;
}
Publicados 111 artículos originales · ganado elogios 2 · Vistas 3533

Supongo que te gusta

Origin blog.csdn.net/m0_38088647/article/details/100516080
Recomendado
Clasificación