Números malos feos

Codeforces Mundial de la Ronda 7

trabajo informal

Se le da un número entero n (n> 0). Estas son sus s enteros que satisface estas condiciones, o de informes que no existan tales números:

En la representación decimal de s:

s> 0,
S consiste de n dígitos,
ningún dígito en s es igual a 0,
s no es divisible por cualquiera de sus dígitos.
Entrada
La entrada consiste en múltiples casos de prueba. La primera línea de la entrada contiene un único entero t (1≤t≤400), el número de casos de prueba. Los próximos t líneas cada uno describen un caso de prueba.

Cada caso de prueba contiene un entero positivo n (1≤n≤105).

Se garantiza que la suma de n para todos los casos de prueba no exceda de 105.

Output
Para cada caso de prueba, imprimir una s número entero que satisface las condiciones descritas anteriormente, o “-1” (sin comillas), si no existe tal número. Si hay varias soluciones posibles para s, imprimir cualquier solución.

Ejemplo
de entrada
4
1
2
3
4
de salida
-1
57
239
6789
Nota
En el primer caso de prueba, no hay soluciones posibles para s que consta de un dígito, porque cualquier solución de este tipo es divisible por sí mismo.

Para el segundo caso de prueba, las posibles soluciones son: 23, 27, 29, 34, 37, 38, 43, 46, 47, 49, 53, 54, 56, 57, 58, 59, 67, 68, 69, 73 , 74, 76, 78, 79, 83, 86, 87, 89, 94, 97, y 98.

Para el tercer caso de prueba, una posible solución es 239 porque 239 no es divisible por 2, 3 o 9 y tiene tres dígitos (ninguno de los cuales es igual a cero).

Ideas de resolución de problemas

Consideremos lo que aparenta no ser aparecer en s.
1, cualquier número puede ser divisible por 1, excluyendo
2, no puede aparecer en un solo dígito, debido 2 dígitos debe ser divisible por 2.
5, no puede aparecer en un solo dígito, lo mismo
¿Hay una cámara digital muy buen juez no puede ser un número entero divisible lo hace?
Sí, esto es 5.
Basta con mirar a un solo dígito no es 0 o 5 en la línea, y porque la propia s no pueden contener 0, sólo tenemos que garantizar que ni un solo dígito 5 será capaz de asegurar que este número no es divisible por 5.
Entonces, ¿cómo asegurarse de que último número?
Categorías discusión, cuando la (n-1)% 3! = 0 , ponemos bits puestos a 3
Esto se aprecia fácilmente, antes de n-1 suma dígito es 5 * (n-1), es dígitos 3, cuando la (n-1)% 3! = 0 tiempo, 5 * (n-1) no es divisible por 3
cuando la (n-1)% 3 == 0, hemos creado después de los dos 43
, porque en este momento, digital 55555 ... 53 será divisible por 3
tenemos los dos últimos dígitos de 43, equivalente al menos el 10, de forma natural, ya no es divisible por 3
simultáneamente 555555 ... 00 es un múltiplo de 100, divisible por 4
, pero no 43 divisible por 4, de modo que el total no es divisible por cuatro, construcción completado

#include <iostream>
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		if(n==1){
			cout<<-1<<endl;
			continue;
		}
		if((n-1)%3){
		for(int i=0;i<n-1;i++)cout<<"5";
		cout<<'3'<<endl;
		}
		else{
			for(int i=0;i<n-2;i++)cout<<"5";
			cout<<"43"<<endl;
		}
	}
}
Liberadas dos artículos originales · ganado elogios 1 · vistas 9

Supongo que te gusta

Origin blog.csdn.net/qq_28329417/article/details/104984213
Recomendado
Clasificación