Problema n.o 34: capacitación en TI: problemas y desafíos actuales de empresas líderes

¡Hola! ¡Nuevamente preparamos para usted una selección de preguntas y tareas interesantes de entrevistas en compañías de TI líderes!



Los problemas aparecerán cada semana. ¡Estén atentos! La columna está respaldada por la agencia de reclutamiento Spice IT .

Esta semana recopilamos tareas de entrevistas en la compañía india Snapdeal. Por cierto, las respuestas a los problemas del número anterior ya se han publicado .

Preguntas


1. Puzzle de rueda de coche
Un automóvil tiene 4 neumáticos y 1 neumático de repuesto. Cada neumático puede recorrer una distancia máxima de 20000 millas antes de desgastarse. ¿Cuál es la distancia máxima que puede recorrer el automóvil antes de que se vea obligado a comprar un neumático nuevo? Puede cambiar los neumáticos (con el neumático de repuesto) un número ilimitado de veces.

Transferir
4 1 . 20000 , . , ? ( ) .

2. Finalización de la tarea
A un hombre se le asigna una tarea. Él duplica la tarea realizada todos los días. Si el hombre completa la tarea en 18 días, ¿cuántos días le tomó al hombre completar el 25% de la tarea?

Transferir
. . 18 , , 25% ?

Tareas


1. Siguiente mayor número de dígitos establecidos
Dado un número n, encuentre el número más pequeño que tenga el mismo conjunto de dígitos que n y sea mayor que n. Si n es el mayor número posible con su conjunto de dígitos, escriba "no es posible".

Entrada:
La primera línea de entrada contiene un número entero T que indica el número de casos de prueba.
La primera línea de cada caso de prueba es n, n es el número.

Salida:
Imprima el número mayor que n con el mismo conjunto de dígitos y, si no es posible, imprima "no es posible" sin comillas dobles.

Restricciones: Ejemplo: Entrada Salida
1 ≤ T ≤ 100
1 ≤ n ≤ 100000




2
143
431



314
not possible

Transferir
n, , , n, n. n — , “not possible”.

:
T, .
— n. n — .

:
, n, , , «not possible».

:
1 ≤ T ≤ 100
1 ≤ n ≤ 100000


:

2
143
431



314
not possible

2. Cambio de moneda
Given a value N, find the number of ways to make change for N cents, if we have infinite supply of each of S = { S1, S2,…, Sm} valued coins. The order of coins doesn’t matter. For example, for N = 4 and S = {1,2,3}, there are four solutions: {1,1,1,1},{1,1,2},{2,2},{1,3}. So output should be 4. For N = 10 and S = {2, 5, 3, 6}, there are five solutions: {2,2,2,2,2}, {2,2,3,3}, {2,2,6}, {2,3,5} and {5,5}. So the output should be 5.

Input:
The first line contains an integer 'T' denoting the total number of test cases. In each test cases, the first line contains an integer 'M' denoting the size of array. The second line contains M space-separated integers A1, A2, ..., AN denoting the elements of the array. The third line contains an integer 'N' denoting the cents.

Output:
Imprima varias formas posibles de realizar cambios por N centavos.

Restricciones: Ejemplo: Entrada: Salida: Explicación: Caso de prueba 1: Las posibilidades son las siguientes: {1, 1, 1, 1}, {1, 1, 2}, {1, 3}, {2, 2}.
1 ≤ T ≤ 50
1 ≤ N ≤ 300
1 ≤ A[i] ≤ 300




2
3
1 2 3
4
4
2 5 3 6
10



4
5




Transferir
N, N, S = { S1, S2, ...,., Sm}. . , N = 4 S = {1,2,3} : {1,1,1,1},{1,1,2},{2,2},{1,3}. 4. N = 10 S = {2, 5, 3, 6}, : {2,2,2,2,2}, {2,2,3,3}, {2,2,6}, {2,3,5} {5,5}. 5.

:
'T', . 'M', . M , A1, A2,..., . 'N', .

:
N.

:
1 ≤ T ≤ 50
1 ≤ N ≤ 300
1 ≤ A [i] ≤ 300


:
:

2
3
1 2 3
4
4
2 5 3 6
10


:
4
5


:
1: : {1, 1, 1, 1}, {1, 1, 2}, {1, 3}, {2, 2}.

3. Directorio telefónico
Dada una lista de contactos que existen en un directorio telefónico y una cadena de consulta str. La tarea es implementar una consulta de búsqueda para el directorio telefónico. Ejecute una consulta de búsqueda para cada prefijo p de la cadena de consulta str (es decir, desde el índice 1 hasta la longitud de la cadena) que imprime todos los contactos recomendados distintos que tienen el mismo prefijo que nuestra consulta (p) en orden lexicográfico. Consulte la parte de explicación para una mejor comprensión.

NOTA: Si no hay coincidencia entre la consulta y los contactos, imprima "0".

Entrada:
The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case contains three lines. First line of each test case contains N i.e., number of contacts. Second line contains space separated all the contacts in the form of string. And third line contains query string.

Output:
For each test case, print each query result in new line. If there is no match between query and contacts, print «0».

Constraints:
1<=T<=100
1<=N<=50
1<=|contact[i].length|<=50
1<=|query length|<=6


Example:
Input:

1
3
spiceit spcicecite spiiceti
spicpt


Output:
spiceit spcicecite spiiceti
spiceit spcicecite spiiceti
spiceit spiiceti
spiceit
0
0


Explanation:
By running the query on contact list, we get,
Suggestions based on "s" are:
spiceit spcicecite spiiceti
Suggestions based on "sp" are:
spiceit spcicecite spiiceti
Suggestions based on "spi" are:
spiceit spiiceti
Suggestions based on "spic" are:
spiceit
No Results Found for «spicp», So print «0».
No Results Found for «spicpt», So print «0».

, str. , . p str (. . 1 str), , , (p) . , .

: , «0».

:
T, . T . . N, . . . , . .

:
. , «0».

:
1<=T<=100
1<=N<=50
1<=|contact[i].length|<=50
1<=| |<=6


:
:

1
3
spiceit spcicecite spiiceti
spicpt


:
spiceit spcicecite spiiceti
spiceit spcicecite spiiceti
spiceit spiiceti
spiceit
0
0


:
, ,
"s", :
spiceit spcicecite spiiceti
"sp", :
spiceit spcicecite spiiceti
"spi", :
spiceit spiiceti
"spic", :
spiceit
«spicp» , «0».
«spicpt» , «0».



1
: 25000 .
: 4 , . . 5000, 5000 .

A, B, C D, — S.

5000 : A S. (A, B, C, D, S): 15000, 15000, 15000, 15000, 20000.
10000 : A B S. (A, B, C, D, S): 15000, 10000, 10000, 10000, 15000.
15000 : B C S. (A, B, C, D, S): 10000, 10000, 5000, 5000, 10000.
20000 : C D S. (A, B, C, D, S): 5000, 5000, 5000, 0, 5000.
25000 : .

2
: 16
100% = 18
,
50% = 17
25% = 16 .

1
import java.io.*;

class GFG {
	public static void main (String[] args) {
		//code
		GFG gfg = new GFG();
		int testCases, n, i;
		String a;
		char[] c;
		Scanner sc = new Scanner(System.in);
		
		testCases = sc.nextInt();
		
		for(int t = 0; t < testCases; t++)
		{
		    a = sc.next();
		    c = a.toCharArray();
		    i = a.length() - 1;
		    
		    while(i > 0)
		    {
		        if(c[i-1] >= c[i])
		        {
		            i--;
		        }
		        else
		        {
		            break;
		        }
		    }
		    
		    if(i == 0)
		    {
		        System.out.println("not possible");
		    }
		    else
		    {
		        i--;
		        
		    
		        int j = i + 1;
		    
		        for(int k = i + 2; k < a.length(); k++)
		        {
		            if(c[k] > c[i])
		            {
		                j = k;
		            }
		        }
		        
		        char v = c[i];
		        c[i] = c[j];
		        c[j] = v;
		        i++;
		        
		        Arrays.sort(c, i, c.length);
		    
		    
		    
		    for(int k = 0; k < a.length(); k++)
		    {
		        System.out.print(c[k]);
		    }
		    System.out.println();		
		        
		    }
		}
		
	}
}

2
for _ in range(int(input())):
    n,ar,m=int(input()),list(map(int,input().split())),int(input())
    dp=[0]*(m+1)
    dp[0]=1
    for i in range(n):
        for j in range(ar[i],m+1):
            dp[j]+=dp[j-ar[i]]
    print(dp[m]) 

3
, TRIE.
, 0 1..n
.
import java.util.*;
import java.lang.*;
import java.io.*;
class trie
{
  HashMap<Character,trie> child;;
  boolean isEnd;
  trie()
  {
    isEnd=false;
    child=new HashMap<>();
  }
  void add(String a,trie root)
  {
  trie cur=root;
  for (int i=0;i<a.length() ;++i ) {
    if(cur.child.containsKey(a.charAt(i)))
    cur=cur.child.get(a.charAt(i));
    else
    {cur.child.put(a.charAt(i),new trie());
      cur=cur.child.get(a.charAt(i));
    }
  }
  cur.isEnd=true;
  }
   void search(String a,trie root)
   {
     trie cur=root;
     for (int i=0; i<a.length();++i ) {
       char t=a.charAt(i);
       trie node=cur.child.get(t);
       if(node==null)
       {System.out.print("0");
     return;}

     cur=node;
     }
     print(cur,a);
   }
   void print(trie root,String prefix)
   {
       if(root.isEnd)
       {System.out.print(prefix+" ");
       }
     for(char i='a';i<='z';++i)
     {
       trie node=root.child.get(i);
       
       if(node!=null)
       print(node,prefix+i);
     }
   }
}
class phoneDict
 {
  static trie root;
  public static void fn(String a[],int n,String q)
  {
    for (String t :a ) {
      root.add(t,root);
    }
    for(int i=1;i<=q.length();++i)
    {root.search(q.substring(0,i),root);
      System.out.println();
    }
  }
 public static void main (String[] args)
  {
 Scanner ab=new Scanner(System.in);
 int t=ab.nextInt();
 while(t-->0)
 {
     root=new trie();
     int n=ab.nextInt();
     String arr[]=new String[n];
     for(int i=0;i<n;++i)
     arr[i]=ab.next();
      fn(arr,n,ab.next());
     //System.out.println();
 }
  }
}

All Articles