Copa Blue Bridge --- factura incorrecta

**

Blue Bridge Cup Preguntas reales Notas incorrectas

**

Límite de recursos Límite de
tiempo: 1,0 s Límite de memoria: 256,0 MB
Descripción del problema

Cierta unidad relacionada con el secreto emitió algún tipo de facturas, y tuvieron que retirarlas todas al final del año.

Cada boleto tiene un número de identificación único. Los números de identificación de todas las facturas a lo largo del año son consecutivos, pero el número inicial de la identificación se selecciona al azar.

Debido a la negligencia del personal, se produjo un error al ingresar el número de identificación, lo que provocó que una identificación estuviera fuera de número y otra se duplicara.

Su tarea es averiguar el ID del número roto y el ID del número repetido a través de la programación.

Suponga que un número roto no puede aparecer en los números más grande y más pequeño.

Formato de entrada

Se requiere que el programa ingrese primero un número entero N (N <100) para indicar el número de filas de datos que siguen.

Luego lea N filas de datos.

La longitud de cada línea de datos varía. Es un número (no más de 100) enteros positivos (no más de 100000) separados por espacios. Tenga en cuenta que puede haber espacios adicionales dentro y al final de la línea. Su programa necesita poder manejar estos espacios.

Cada entero representa un número de identificación.

Formato de salida

Se requiere que el programa genere una línea, que contenga dos enteros mn, separados por espacios.

Entre ellos, m representa el ID del número roto, n representa el ID del número repetido

Entrada de muestra 1

2
5 6 8 11 9
10 12 9

Salida de muestra 1

7 9

Entrada de muestra 2

6
164 178 108 109 180 155 141 159 104 182 179 118 137 184 115 124 125 129 168 196
172 189 127 107 112 192 103 131 133 169 158
128 102 110 148 139 157 140 195 197
185 152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190
149 138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101 194 187 188
113 130 176 154 177 120 117 150 114 183 186 181 100 163 160 167 147 198 111 119

Salida de muestra 2

105 120

aceptar código:

#include<stdio.h>
#include<string.h>
#include<algorithm>

using namespace std;
int a[101]={
    
    0};
int len=0;

int main()
{
    
    
    int n;
    scanf("%d",&n);
    getchar();
    int num;

    for(int i=0;i<n;i++){
    
    
        char s[9999];
		gets(s);
        int num=0;
        for(int j=0;j<9999;j++){
    
    
			if((s[j]==' '&&num!=0)||(s[j]=='\0')){
    
    
				a[len++]=num;
				num=0;
			}
			if(s[j]>='0'&&s[j]<='9'){
    
    
        		num=num*10+(s[j]-'0');
			}
			if(s[j]=='\0')break;
		}
    }
    sort(a,a+len);

    int ans1=0;
    int ans2=0;
    for(int i=1;i<=len-1;i++){
    
    
        if(a[i]==a[i-1]){
    
    
            ans2=a[i];
        }
        if(a[i]-a[i-1]>1){
    
    
            ans1=a[i]-1;
        }
    }

    printf("%d %d",ans1,ans2);
    return 0;
}

Idea: ¡Esta pregunta será muy fácil de escribir en Java! En java, use esa cadena para generar una función de matriz de caracteres con espacios como intervalo.

Supongo que te gusta

Origin blog.csdn.net/timelessx_x/article/details/114701495
Recomendado
Clasificación