[Blue Bridge Cup] Preguntas del examen Entrenamiento-Análisis de las preguntas del examen de la VI Competencia Provincial Copa Lanqiao C / C ++ Grupo Universitario B

Pregunta 1 Número de billetes de lotería 

Algunas personas son muy supersticiosas con los números, por ejemplo, los números con "4" piensan que son homofónicos con "muerte", lo cual es desafortunado.
Aunque estas afirmaciones son pura tontería, a veces tienen que satisfacer las necesidades del público. El número de lotería de una lotería es de 5 dígitos (10000-99999) y se requiere el número con "4." El organizador le pide que calcule cuántos boletos de lotería se pueden emitir si dos boletos de lotería no están duplicados.
Envíe el número (un entero) y no escriba ningún contenido adicional o texto descriptivo.

Respuesta: 52488

Organizar, 8 * 9 * 9 * 9 * 9

 

Pregunta 2 Galaxy Bomb

Hay muchas "bombas" artificiales de estrellas X flotando en el vasto espacio de la galaxia X, que se utilizan como señales de tráfico en el universo.
Cada bomba se puede configurar para que explote en días.
Por ejemplo, si la Bomba Alfa se coloca el 11 de noviembre de 2015, 2015 y el tiempo es de 15 a 1515 días, explotará el 16 de noviembre de 2015.
Hay una bomba beta, que se colocó el 9 de noviembre de 2014, el 9 de noviembre de 2014. El tiempo es 1000 1000 1000 días. Calcule la fecha exacta en que explotó.
Por favor, complete la fecha en el formato aaaa - mm - dd aaaa-mm-ddyyyy − mm − dd, que es 4 44 dígitos año 2 22 dígitos mes 2 22 dígitos día. Por ejemplo: 2015-02-19
Nota: escriba estrictamente de acuerdo con el formato. No pueden aparecer otras palabras o símbolos.

Respuesta: 2017-8-5 

 

La tercera pregunta

Observe la siguiente fórmula de suma:
Inserte la descripción de la imagen aquí
Entre ellos, el mismo carácter chino representa el mismo número y diferentes caracteres chinos representan números diferentes.
Por favor, complete los 4 dígitos representados por "Sanyang Xianrui" (la respuesta es solo), y no complete ningún contenido redundante.

Respuesta: 1085

Arreglo completo

#include <iostream>
#include <algorithm>
using namespace std;
 
int main(int argc, char** argv) {
	int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
	do{
		if(a[0] == 0 || a[4] == 0){
			continue;
		}
		int num1, num2, sum;
		num1 = a[0]*1000 + a[1]*100 + a[2]*10 + a[3];
		num2 = a[4]*1000 + a[5]*100 + a[6]*10 + a[1];
		sum = a[4]*10000 + a[5]*1000 + a[2]*100 + a[1]*10 + a[7];
		if(num1 + num2 == sum){
			cout << num2 ;
			break;
		}
	}while(next_permutation(a, a+10));
	
	return 0;
}

 

Salida en la cuadrícula de la cuarta pregunta

La función StringInGrid imprimirá la cadena especificada en una cuadrícula de un tamaño especificado.
Se requiere que la cuerda esté centrada tanto en la dirección horizontal como en la vertical.
Si la cadena es demasiado larga, se trunca.
Si no puede centrarse, puede moverlo ligeramente hacia la izquierda o hacia arriba.
El siguiente programa implementa esta lógica, por favor complete el código que falta en la parte subrayada.
Para los datos del título, debería generar:

Inserte la descripción de la imagen aquí

Nota: Solo complete el contenido que falta, no escriba ningún código existente o texto explicativo en el título.

 答案 : (ancho - strlen (buf)) / 2 - 1, "", buf, (ancho - strlen (buf)) / 2 - 1, ""

 % [*] [Ancho de datos de entrada] [largo] tipo

printf ("% * s% s% * s", (width-strlen (buf)) / 2-1, "", buf, (width-strlen (buf)) / 2-1, ""); significa ( width-strlen (buf)) / 2-1 espacio, luego% s imprime buf y finalmente imprime los espacios restantes

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

void StringInGrid(int width, int height, const char* s)
{
	int i, k;
	char buf[1000];
	strcpy(buf, s);
	if(strlen(s) > width-2) buf[width-2]=0;
	
	printf("+");
	for(i=0; i < width-2; i++) 
		printf("-");
	printf("+\n");
	
	for(k=1; k < (height-1)/2; k++){
		printf("|");
		for(i=0; i < width-2; i++) 
			printf(" ");
		printf("|\n");
	}
	
	printf("|");
	
//	printf("%*s%s%*s",_____________________________________________);  //填空
	printf("%*s%s%*s", (width - strlen(buf))/2 - 1, " ", buf, (width - strlen(buf))/2 - 1, " ");
	
	printf("|\n");
	
	for(k=(height-1)/2+1; k<height-1; k++){
		printf("|");
		for(i=0;i<width-2;i++) printf(" ");
		printf("|\n");
	}	
	
	printf("+");
	for(i=0;i<width-2;i++) printf("-");
	printf("+\n");	
}

int main()
{
	StringInGrid(20,6,"abcd1234");
	return 0;
}

Pregunta 5: Nueve puntuaciones de matriz

Los nueve números 1, 2, 3 ... 9 forman una puntuación y su valor es exactamente 1/3 ¿Cómo agruparlo?
El siguiente programa implementa esta función, por favor complete el código que falta en la parte subrayada.
Nota: Solo complete el contenido que falta, no escriba ningún código existente o texto explicativo en el título.

 答案 : {t = x [k]; x [k] = x [i]; x [i] = t;}


#include <stdio.h>
 
void test(int x[])
{
	int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
	int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
	
	if(a*3 == b) 
		printf("%d / %d\n", a, b);
}
 
void f(int x[], int k)
{
	int i, t;
	if(k >= 9){
		test(x);
		return;
	}
	
	for(i=k; i<9; i++){
		{t=x[k]; x[k]=x[i]; x[i]=t;}
		f(x,k+1);
//		_____________________________________________ // 填空处
		{t=x[k]; x[k]=x[i]; x[i]=t;}
	}
}
	
int main()
{
	int x[] = {1,2,3,4,5,6,7,8,9};
	f(x, 0);	
	return 0;
}

Pregunta 6 Suma y multiplicación

Todos sabemos: 1 + 2 + 3 + ... + 49 = 1225 
Ahora debe convertir los dos signos más no adyacentes en signos de multiplicación para que el resultado sea 2015. Por
ejemplo:
1 + 2 + 3 +. .. + 10 ∗ 11 + 12 + ... + 27 ∗ 28 + 29 + ... + 49 = 2015 
es la respuesta que cumple con los requisitos.
Busque otra posible respuesta y envíe el número a la izquierda del signo de multiplicación en la posición delantera (por ejemplo, envíe 10 1010).
Nota: Lo que debe enviar es un número entero, no complete ningún contenido adicional.

Respuesta: 16 

#include <iostream>
using namespace std;

void solve(){
	int first, second;
	for(first = 1; first <= 48; first++){
		if(first == 10){
			continue;
		}
		for(second = first + 2; second <= 48; second++){
			int res = 0, i = 1;
			while(i <= 49){
				if((i == first) || i == second){
					res += i * (i+1);
					i += 2;
				}else{
					res += i;
					i++;
				}
			}
			if(res == 2015){
				cout << first;
			}
		}
	}
}

int main(int argc, char** argv) {
	solve();
	return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44566432/article/details/115055890
Recomendado
Clasificación