2. Figuras Rectangulares
Descripción
Tenemos un conjunto de cuadrados y rectángulos cuyos medidas de sus diferentes lados son
cantidades enteras y mayores a 1 y , si tenemos el área de la figura, es posible que sea un
cuadrado o un rectángulo.
Problema
Construye un programa que nos ayude a resolver este problema (dada el área de una figura
determinar si es cuadrado o rectángulo), la lectura la debes hacer de la entrada estándar (teclado)
y la escritura se debe hacer a la salida estándar (pantalla).
Entrada
La primera línea contendrá un número "N" entre 1 y 1,000,000,000, representando el área.
Salida
Una sola línea indicando la figura que se puede formar, si el área puede formar un cuadrado debes
imprimir la palabra “cuadrado” si el área puede formar un rectángulo, debes imprimir la palabra
“rectangulo” y si el área puede formar ambos debe imprimir la palabra “ambos” (note no hay
acentos ni mayusculas), en caso de que no se pueda formar un cuadrado o rectángulo escriba
"ninguno"
Ejemplos
Entrada Salida
9
cuadrado
6
rectangulo
36
ambos
Consideraciones
Tu programa se ejecutara con varios casos de prueba.
3. Tips
Área de un cuadrado = lado * lado
Área de un rectángulo= (base * altura )
¿Hasta que valor con respecto a “N” debo probar ?
Observa que solo debes probar desde 2 hasta raíz de "N", si un número es divisible entre 2
significa que también es divisible entre N/2 por tanto si probamos con el numero 2, estamos al
mismo tiempo probando con el numero N/2.
Solucion
import java.util.*;
public class figuras{
public static void main (String [] args){
Scanner in=new Scanner (System.in);
int contador=0;
int n=in.nextInt();
int raiz=(int)Math.sqrt(n);
for(int i=2; i<n; i++){
if(n!=0){
System.out.println("n:"+n+"i"+i);
contador++;
}
}
if((raiz*raiz)==n && contador>=2){
System.out.println("ambos");
}
if((raiz*raiz)==n && contador>=2){
System.out.println("ambos");
4. }
if((raiz*raiz)==n && contador>=2){
System.out.println("ambos");
}
}
}
Ordenando
Problema
Dada una lista de números enteros hay que determinar si la lista esta ordenada de menor a mayor,
de mayor a menor o sencillamente no está ordenada.
Entrada
En la primera línea un valor “n” indicando la cantidad de valores que conforma la lista, donde
3<=n<=1000, en la segunda línea los “n” números separados por un espacio, cada número está en
el rango de 1 a 1,000,000,000.
Salida
Una sola línea con 3 posibles valores, si la lista está ordenada de menor a mayor debes escribir la
palabra “CRECIENTE” si la lista esta ordenada de mayor a menor debes escribir la palabra
“DECRECIENTE” y si la lista no esta ordenada debes escribir la frase “NO ORDENADA”. Te
aseguramos que no existe un caso con posibilidad de empate (que pueda ser creciente y
decreciente).
Consideraciones
Tu programa se evaluará con varios casos de prueba.
Ejemplos
Entrada
Salida Descripción
5
10 20 30 40 40
CRECIENTE
Case #1:
3
3 2 2
DECRECIENTE
Case #2:
4
1 10 10 5
NO ORDENADA
Case #3:
Solucion
import java.util.*;
public class ordenado{
5. public static void main(String [] args){
Scanner in=new Scanner (System.in);
int n=in.nextInt();
int [] numeros=new int [n];
for (int i=0; i<n; i++){
numeros[i]=in.nextInt();
}
ImprimeArray(numeros, n);
checarOrden(numeros, n;
}
public static void ImprimeArray(int [] n, int num ){
for (int i=0; i<num; i++) {
System.out.println("N-> "+n[i]);
}
}
public static void checarOrden(int [] n, int num){
int c=0, d=0;
for(int i=1; i<num; i++){
if(n[i-1]>=n[i]){
c++;
}
else if(n[i-1]>=n[i]){
6. d++;
}
}
if(c==(num-1)){System.out.println("creciente");}
else if (d==(num-1)){System.out.println("decreciente");}
else {System.out.println("no ordenado");}
}
}
Sumando
Problema
Se tiene un matriz cuadrada de tamaño “n” y se requiere saber cuánto suma cada columna.
Entrada
En el primer renglón un valor “n” indicando el tamaño de la matriz donde 1<=n<=1000 y en los
siguientes “n” renglones habrán “n” valores correspondientes los valores de cada renglón de la
matriz donde 1<=V<= 1000.
Salida
Un renglón con “n” cantidades, cada cantidad representa la sumatoria de cada columna de la
matriz, el primer valor corresponde a la columna 1, el segundo a la columna 2 ,... y el último
valor corresponde a la columna “n”.
Consideraciones
Tu programa se evaluará con varios casos de prueba.
Ejemplos
Entrada
Salida Descripción
3
1 2 3
3 5 6
7 8 9
11 15 18
Case #1:
4
3 2 4 3
2 3 3 2
7 8 5 3
1 1 1 1
13 14 13 9
7. Case #2:
Solucion
import java.util.*;
public class sumando{
public static void main (String [] args){
Scanner ui=new Scanner (System.in);
int n=ui.nextInt();
int numero [][] = new int [n][n];
int suma [] = new int [n];
for(int i=0; i<n; i++){
for(int k=0; k<n; k++){
numero [i][k]=ui.nextInt();
suma [i]=0;
}
}
Imprimir (numero, n);
ObtenerSuma(numero,n,suma);
ImprimirSuma(suma, n);
}
public static void Imprimir(int [][] numero, int n){
for(int i=0; i<n; i++){
for(int k=0; k<n; k++){
9. A continuación te mostramos un giro de 90 grados a la derecha de una matriz de 2 por 2
cuyos valores son:
Matriz original 1 2 3 4
Matriz Girada 90° a la derecha 3 1 4 2
Problema
Dada una matriz cuadrada de tamaño “n” , debes hacer que tu programa la gire 90 grados a la
derecha.
Entrada
En la primera línea el valor “n” indicando el tamaño de la matriz donde 1<=n<=1000, en los
siguientes “n” renglones habrán “n” valores de la matriz separados por un espacio.
Salida
“n” renglones cada renglón con "n" valores mostrando la matriz girada 90 grados.
Consideraciones Tu programa se evaluará con varios casos de prueba
Ejemplo
Entrada
Salida Descripción
2
1 2
3 4
3 1
4 2
Case #1:
3
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
Solucion
import java.util.*;
public class cuadrado{
public static void main(String[]args){
Scanner in=new Scanner(System.in);
int j=in.nextInt();
int numeros [][]=new int[j][j];
for(int m=0;m<j;m++){
for(int i=0;i<j;i++){
numeros[m][i]=in.nextInt();
}
}
for(int i=0;i<j;i++){
for (int m=(j-1);m>=0;m--){
System.out.print(numeros[m][j]+"");
}
10. System.out.println("");
}
}
}
Bardeando
Descripción
Se tiene un conjunto de “n” trozos de malla ciclónica y un terreno de perímetro “P” el terreno
es cuadrado.
Problema
Debes escribir un programa que nos diga cuántos metros de malla ciclonica nos hace falta
para poder bardear el terreno.
Entrada
En la primera línea dos números “P” y "n", donde "P" representa el perímetro del terreno con
un rango de valores de 1<=P <= 2,000,000,000 y “n” representa la cantidad de trozos de malla
ciclónica que tenemos, donde 1<=n<=100,000. En las siguientes “n” líneas es el tamaño de
cada trozo de malla que tenemos. La suma de todos los trozos siempre será menor a
2147483648.
Salida
Un único valor entero indicando los metros de malla que nos hacen falta para bardear el
terreno.
Ejemplos
Entrada
Salida Descripción
100 3
25
20
10
45
Caso #1
100 2
1000
2000
0
Caso #2
21 1
20
1
Caso #3
Solucion
import java.util.*;
public class bardeando{
public static void main(String[] args) {
Scanner in=new Scanner (System.in);
11. int a=in.nextInt();
int c[]=new int [a];
for (int i=0;i<a ;i++ ) {
c[i]=in.nextInt();
int cx=c[i];
int d[]=new int [cx];
for (int k=0;k<cx ;k++ ) {
int ax=k+1;
d[k]=c[i]%ax;
if (d[k]==0) {
Suma Triple
Descripción
Se tiene la siguiente función f(n), formada por la suma de los tres números anteriores.
f(1)=1
f(2)=1
f(3)=2
f(4)=4
f(5)=7
f(6)=13
f(7)=24
f(8)=44
f(9)=81
Note que f(1) = 1 ya que no tiene números anteriores, f(2)=1 ya que es el único número
anterior, f(3) tiene solo 2 números anteriores y a partir de f(4) se da la suma de los tres
números anteriores.
Problema
Escribe un programa que dado el valor de “n” escriba la serie correspondiente.
Entrada
Un solo renglón conteniendo el valor “n”donde 1<=n<=64.
Salida
Una sola línea mostrando la serie desde el número menor hasta el mayor cada número debe
estar separado por un espacio.
Entrada
Salida Descripción
4
1 1 2 4
Caso #1
6
1 1 2 4 7 13
Caso #2
9
1 1 2 4 7 13 24 44 81
Caso #3
Tips Un entero 32 bits es capaz de almacenar la f(n) para n=60
import java.util.*;
12. public class sumando{
public static void main (String [] args){
Scanner ui=new Scanner (System.in);
int n=ui.nextInt();
int numero [][] = new int [n][n];
int suma [] = new int [n];
for(int i=0; i<n; i++){
for(int k=0; k<n; k++){
numero [i][k]=ui.nextInt();
suma [i]=0;
}
}
Imprimir (numero, n);
ObtenerSuma(numero,n,suma);
ImprimirSuma(suma, n);
}
public static void Imprimir(int [][] numero, int n){
for(int i=0; i<n; i++){
for(int k=0; k<n; k++){
System.out.println("numero["+(i+1)+"]["+(k+1)+"]=>"+numero
[i][k]+" ");
13. }
System.out.println("");
}
}
public static void ObtenerSuma (int [][] numero, int n, int [] suma){
for(int i=0; i<n; i++){
for(int k=0; k<n; k++){
suma [k]=numero [i][k];
Triángulo
Descripción
Un triángulo es formado por 3 segmentos (con valor entero) de recta unidos por sus extremos,
sin embargo no todas las combinaciones de 3 segmentos pueden formar un triángulo.
Problema
Escriba un programa que dados 3 números que representan 3 segmentos de rectas, diga si
pueden formar un triángulo rectángulo.
Entrada
En la primera línea 3 números “a”, “b” y “c” representando las longitudes de 3 segmentos de
recta en un rango de entre 1 y 32,000.
Salida
Una sola línea en donde si es posible generar un triángulo rectángulo debes imprimir la
hipotenusa, el cateto mayor y el cateto menor y si no es posible formar un triángulo rectángulo
imprime la palabra “imposible”.
Consideraciones
Tu programa se evaluará con varios casos de prueba, para cada caso de prueba (entrada)
Ejemplos
Entrada
Salida Descripción
1 1 1
imposible
Caso #1
3 4 5
5 4 3
Caso #2
Consideraciones
Tu programa se ejecutara con varios casos de prueba.
Tips
14. El teorema de Pitágoras la hipotenusa es igual a la raíz cuadrada de la suma de los cuadrados
de sus catetos.
¿Es necesario hacer el cálculo de la raíz cuadrada?
import java.util.*;
public class Triangulo {
public static void main(String[] args) {
Scanner a=new Scanner (System.in);
int b=a.nextInt();
int y=a.nextInt();
int s=a.nextInt();
if(b>y){
if(y<s){
int u=(b*b)+(y*y);
double v=Math.sqrt(u);
System.out.println(""+v+","+b+","+y);
}
}
if(b>y){
if(y<s){
int d=(y*y)+(s*s);
double v=Math.sqrt(d);
System.out.println(""+v+","+y+","+b);
}
}
16. public static void main(String[] args) {
Scanner h=new Scanner (System.in);
int d=h.nextInt();
int c=d/10;
int a=c*10;
int b=d-a;
String romano,unidades;
switch(c){
case 1:
romano="X";
break;
case 2:
romano="XX";
break;
case 3:
romano="XXX";
break;
case 4:
romano="XL";
break;
case 5:
19. unidades="IX";
break;
case 10:
unidades="";
break;
default:
}
}
}
Tablero de Ajedrez
Descripción
Dadas las coordenadas de una casilla en un tablero de ajedrez de 8x8, determinar el color de dicha
casilla.
Entrada
Una línea con la letra y dígito separados por espacios correspondientes a la coordenada de la casilla.
Salida
Imprime BLANCO, NEGRO según sea el caso.
Ejemplos
Entrada
Salida Descripción
a 1
Salida
NEGRO
Entrada
Salida Descripción c 2 Salida BLANCO
import java.util.*;
public class Ajedrez {
/**
20. * @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scanner Z=new Scanner (System.in);
String a=Z.nextLine();
int lin=Z.nextInt();
if(a.equals("a")){
if(lin==1){
System.out.println("salida negro");
}
else if(lin==3){
System.out.println("salida negro");
}
else if(lin==5){
System.out.println("salida negro");
}
else if(lin==7){
28. System.out.println("salida blanco");
}
else{
System.out.println("salida negro");
}
}
}
}
Intervalo
Descripción
Escribe un programa que lea tres enteros a, b, c y determine si c se encuentra en el intervalo
[a,b], a la izquierda o a la derecha de dicho intervalo.
Entrada
Una línea con los enteros a,b,c separados por un espacio
Salida
Imprime INTERVALO, IZQUIERDA o DERECHA según sea el caso.
Ejemplos
Entrada
Salida Descripción
3 10 6
Salida
INTERVALO
6 se encuentra contenido en el intervalo desde 3 hasta 10
Entrada
Salida Descripción
4 20 30
Salida
DERECHA
30 está a la derecha del intervalo 4 a 20.
Entrada
Salida Descripción
29. 2 30 1
Salida
IZQUIERDA
1 está a la izquierda del intervalo 2 a 30
Entrada
Salida Descripción
10 20 10
Salida
INTERVALO
import java.util.*;
public class intervalo{
public static void main(String[]args){
Scanner a=new Scanner (System.in);
int x=a.nextInt();
int y=a.nextInt();
int z=a.nextInt();
if(x>z){
if(y>z){
System.out.println("El numero "+z+" se encuentra a la
izquierda del intervalo "+x+" - "+y);
}
}
if(x<z){
if(y<z){
System.out.println("El numero "+z+" se encuentra a la
derecha del intervalo " +x+" - "+y);
}
}
30. if(x<z){
if(z<y){
System.out.println("El numero "+z+" se encuentra
contenido en el intervalo "+x+" - "+y);
}
}
if(x>=z){
if(z<=y){
System.out.println("Intervalo");
}
}
if(x<=z){
if(z>=y){
System.out.println("Intervalo");
}
}
}
}
Sedes
Descripción
Ahora que estás en la preselección de Veracruz, debes prepararte mucho para ser
seleccionado. Como parte de este proceso, se deben realizar algunos entrenamientos y de
preferencia en varias sedes del estado, por ejemplo Coatzacoalcos, Veracruz, Xalapa,
Tuxpan, etc. Puesto que a ti te gusta viajar mucho, quieres asistir a las dos sedes que estén
más lejos entre sí.
Suponiendo que todas las sedes se encontraran en línea recta, una tras de otra, identifica,
cuál es la distancia más larga que deberías recorrer entre dos sedes.
Entrada
31. En la primera línea el número n, que indica la cantidad de sedes para este año.
1<=n<=100000. En las siguientes n líneas un número indicando la distancia de esa sede con
respecto a tu ubicación actual entre 0<=d <=5000. Supón que tu ubicación actual es el inicio
de la línea recta, por lo que todas las distancias serán positivas. Siempre te encuentras en el
km 0, y en el ejemplo la primera sede está a 7 kilómetros de tu ubicación, la segunda a 5, la
tercera a 13, y la cuarta a 4 kilómetros de tu ubicac
Salida
Un solo número con un salto de línea, indicando la distancia máxima que hay entre dos sedes.
Ejemplo
4
7
5
13
4
9
import java.util.*;
public class sede{
public static void main(String[] args) {
Scanner in=new Scanner (System.in);
int a=in.nextInt();
int lmfao[]=new int [a];
for (int i=0;i<a ;i++ ){
lmfao[i]=in.nextInt();
}
int c=lmfao[0];
for (int i=1;i<a ;i++ ) {
if (lmfao[i]>c){
c=lmfao[i];
}
32. }
int q=lmfao[0];
for (int i=1;i<a ;i++ ) {
if (lmfao[i]<q){
q=lmfao[i];
}
}
int x=c-q;
System.out.println(" "+x);
Par Impar
Solución
import java.util.*;
public class par{
public static void main(String[] args) {
Scanner in=new Scanner (System.in);
int a=in.nextInt();
int b[]=new int [a];
System.out.println("n");
for (int i=0;i<a ;i++ ) {
33. b[i]=in.nextInt();
}
for(int j=0;j<a;j++){
int c=b[j]%2;
if (b[j]==0) {
System.out.println("CERO");
}
else if (c==0) {
if (b[j]<0){
System.out.println("PAR NEGATIVO");
}
else{
System.out.println("PAR POSITIVO");
}
}
else{
if (b[j]<0) {
System.out.println("IMPAR NEGATIVO");
}
else{
System.out.println("IMPAR POSITIVO");
34. }
}
}
}
}
Dados
Solución
import java.util.*;
public class dados{
public static void main(String[] args) {
Scanner in=new Scanner (System.in);
int a=in.nextInt();
int c[]=new int [a];
int ar[]=new int [a];
int mayor;
for (int i=0;i<a ;i++ ){
ar[i]=in.nextInt();
}
for (int m=1;m<a ;m++ ) {
for (int z=0;z<a ;z++ ) {
if(ar[m]<ar[z]){