Título Descripción
Para enriquecer la vida extracurricular de los miembros del grupo, la Academia organizó un concurso para aprender el conocimiento de un país fuerte. Las reglas de puntaje del concurso son: cada jugador tiene un puntaje inicial de 10 puntos, y los concursantes deben responder 10 preguntas (numeradas del 1 al 10) , La respuesta es correcta, el puntaje actual se duplica, si la respuesta es incorrecta, se deducirá el puntaje con el mismo número de pregunta.De entrada
La primera línea tiene un número entero M (1 <= M <100) significa que hay M conjuntos de datos de prueba; luego cada línea ingresa un puntaje de puntaje (0≤ puntaje ≤100)
Salida
Asumiendo que no has visto el juego, muestra el número de situaciones posibles para cada puntaje y -1 si no hay situaciones posibles. (Sugerencia: si 0 representa la pregunta incorrecta del jugador, 1 representa la pregunta correcta del jugador y el puntaje final del jugador es 90, puede haber las siguientes dos situaciones
1110000010
0001110110)Entrada de muestra
3 68 63 100Salida de muestra
7 -1 3
Enlace del título original: juego interesante
Observar:
0000000000 -> 0
0000000001 -> 1
0000000010 -> 2
…
1111111111 -> 1023
Solo necesita atravesar 0 ~ 1023 para obtener todos los casos y juzgar si cada caso cumple con el puntaje ingresado.
- 1. Sujete el número decimal al número binario (% 2 cada vez)
- 2. La vacante frontal debe llenarse con 0 (el conjunto se establece en 0 y el resultado de insertar% 2 desde atrás)
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main() {
int m;
cin>>m;
int a[10];
while(m--) {
int score;
cin>>score;
int cnt=0;
for(int i=0; i<=1023; i++) {
memset(a,0,sizeof(a));
int p=9;
int t=i;
while(t) {
a[p--]=t%2;
t/=2;
}
int s = 10;
for(int j=0; j<10; j++) {
if(a[j]==0) s-=(j+1);
else s*=2;
}
if(score==s) cnt++;
}
if(cnt==0) cout<<-1<<endl;
else cout<<cnt<<endl;
}
return 0;
}