第32期:IT培训-领先公司的当前问题和挑战

尊敬的读者您好。从采访到领先的IT公司,我们为您带来一系列有趣的新问题和新任务,使您一次又一次地高兴!

顺便说一句,上一期的问题答案已经发布



问题将每周出现-敬请期待!该专栏由招聘机构Spice IT支持

本周,我们从印度公司MakeMyTrip的采访中收集了任务。

问题


1. 10枚硬币拼图
您被蒙住了眼睛,桌上放着10个硬币。您可以触摸硬币,但凭感觉无法分辨出硬币的上升方向。有人告诉您,正面朝上有5个硬币,背面朝上有5个硬币,但哪一个不是。

您能否以相同的抬头数制造两堆硬币?您可以多次翻转硬币。

传递
10 . , , . , 5 , («») 5 , («») , — .

, ? .

2. 报纸拼图
由16张大纸制成的报纸对折。报纸共有64页。第一页包含页1、2、63、64。

如果我们拿起包含页号45的页,则该页还包含哪些其他页?

传递
16 , . 64 . 1, 2, 63, 64.


*

, 45. ?

任务


1. 矩阵转置
Write a program to find transpose of a square matrix mat[][] of size N*N. Transpose of a matrix is obtained by changing rows to columns and columns to rows.

Input:
The first line of input contains an integer T, denoting the number of testcases. Then T test cases follow. Each test case contains an integer N, denoting the size of the square matrix. Then in the next line are N*N space separated values of the matrix.

Output:
For each test case output will be the space separated values of the transpose of the matrix

Constraints:
1 <= T <= 15
1 <= N <= 20
-103 <= mat[i][j] <= 103


Example:
Input:

2
4
1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
2
1 2 -9 -2


Output:
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
1 -9 2 -2


Explanation:
测试案例1:旋转后的矩阵为:1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4。

传递
, mat[][] N*N. .

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

:


:
1 < = T <= 15
1 < = N <= 20
-103 < = mat[i] [j] < = 103


:
:

2
4
1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
2
1 2 -9 -2


:
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
1 -9 2 -2


:
1: : 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4.

2. 阶乘尾随零
对于整数n,请在n中找到尾随零的数目

输入:
第一行包含一个整数“ T ”,表示测试用例的总数。在每个测试用例中,它都包含一个整数“ N ”。

输出:
在每行中输出问题的答案。

约束:示例: 输入:输出:
1 <= T <= 100
1 <= N <= 1000




1
9


1
传递
n n!.

:
'T', . 'N'.

:
.

:
1 < = T <= 100
1 < = N < = 1000


:
:

1
9

:
1

3. 骑士的脚步
Given a square chessboard of N x N size, the position of Knight and position of a target is given. We need to find out minimum steps a Knight will take to reach the target position.

Input:
The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case contains an integer n denoting the size of the square chessboard. The next line contains the X-Y coordinates of the knight. The next line contains the X-Y coordinates of the target.

Output:
Print the minimum steps the Knight will take to reach the target position.

Constraints:
1<=T<=100
1<=N<=20
1<=knight_pos,targer_pos<=N


Example:
Input:

2
6
4 5
1 1
20
5 7
15 20


Output:
3
9

N x N . , , .

:
T, . T . n, . X-Y . X-Y .

:
, , .

:
1<=T<=100
1<=N<=20
1<=knight_pos,targer_pos<=N


:
:

2
6
4 5
1 1
20
5 7
15 20


:
3
9


1
: .
:
2 . .

:
— , — .
1:
2:

1.
1:
2:

.

2
45- 46. , P, 65-p .

,
65-45 = 20
65-46 = 19

, — 19, 20, 45, 46.

1
O(1) :
import java.util.*;
import java.lang.*;
import java.io.*;
class GFG
 {
	public static void main (String[] args)
	 {
	 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	 try{
	     int testCases = Integer.parseInt(br.readLine());
	     while(testCases-->0){
	         int size = Integer.parseInt(br.readLine());
	         int[] arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
	         int num = 0;
	         int i=0;
	         int total = size*size;
	         
	         while(num<total && i<size){
	             if(num >= size*(size-1)) { 
	                System.out.print(arr[num] + " ");
	                i++;
	                num = i;
	             }
	             else {
	             System.out.print(arr[num] + " ");
	             num+=size;
	             }
	         }
	         System.out.println();
	     }
	 }
	 catch (Exception e){
	     e.printStackTrace();
	 }
	 }
}

2
import math
for _ in range(int(input())):
n=math.factorial(int(input()))
print(len(str(n))-len(str(n).rstrip("0")))

3
#include<bits/stdc++.h>
using namespace std;

void bfs(bool visited[20][20],int n,int x,int y,int X,int Y,int& count){
    queue<pair<int,int>>q;
    visited[x-1][y-1]=true;
    q.push(make_pair(x,y));
    q.push(make_pair(0,0));
    while(q.size()>1){
        x=q.front().first;
        y=q.front().second;
        if(q.front().first==0 && q.front().second==0){
            q.pop();
            count++;
            q.push(make_pair(0,0));
            continue;
        }
        if(q.front().first==X && q.front().second==Y){
            return;
        }
        if(x>2 && y>1 && visited[x-3][y-2]==false){
            visited[x-3][y-2]=true;
            q.push(make_pair(x-2,y-1));
        }
        if(x>2 && y<n && visited[x-3][y]==false){
            visited[x-3][y]=true;
            q.push(make_pair(x-2,y+1));
        }
        if(x>1 && y<n-1 && visited[x-2][y+1]==false){
            visited[x-2][y+1]=true;
            q.push(make_pair(x-1,y+2));
        }
        if(x<n && y<n-1 && visited[x][y+1]==false){
            visited[x][y+1]=true;
            q.push(make_pair(x+1,y+2));
        }
        if(x<n-1 && y<n && visited[x+1][y]==false){
            visited[x+1][y]=true;
            q.push(make_pair(x+2,y+1));
        }
        if(x<n-1 && y>1 && visited[x+1][y-2]==false){
            visited[x+1][y-2]=true;
            q.push(make_pair(x+2,y-1));
        }
        if(x<n && y>2 && visited[x][y-3]==false){
            visited[x][y-3]=true;
            q.push(make_pair(x+1,y-2));
        }
        if(x>1 && y>2 && visited[x-2][y-3]==false){
            visited[x-2][y-3]=true;
            q.push(make_pair(x-1,y-2));
        }
        q.pop();
    }
}
int main()
{
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        int x,y,X,Y;
        cin>>x>>y>>X>>Y;
        int count=0;
        bool visited[20][20]={false};
        bfs(visited,n,x,y,X,Y,count);
        cout<<count<<'\n';
    }
	return 0;
}

All Articles