문자열 목록이 있다고 가정합니다. 목록에 일부 중복 문자열이 있습니다. 어떤 문자열이 두 번 이상 발생했는지 확인해야 합니다. 문자열 목록이 [Hello, Kite, Hello, C++, Tom, C++]와 같다고 가정합니다. 여기서 우리는 해싱 기술을 사용할 것이므로 빈 해시 테이블을 만든 다음 각 문자열을 순회하고 각 문자열에 대해 s가 이미 해시에 있는 다음 문자열을 표시하고 그렇지 않으면 해시에 삽입합니다. 예시 #include<iostream> #include<vector> #include<un
$x\hat{i}+y\hat{j}+z\hat{k}$ 형태의 평행사변형의 두 변에 대한 두 벡터가 있다고 가정합니다. 우리의 임무는 평행사변형의 면적을 찾는 것입니다. 평행 사변형의 면적은 두 벡터의 외적 크기입니다. (|A × B|) $$\rvert \vec{A}\times\vec{B}\rvert=\sqrt{\lgroup y_{1}*z_{2}-y_{2}*z_{1}\rgroup^{2}+ \l그룹 x_{1}*z_{2}-x_{2}*z_{1}\rgroup^{2}+\l그룹 x_{1}*y_{2}-x_{2}*y_{1}\ rgroup^{2}}$
$x\hat{i}+y\hat{j}+z\hat{k}$ 형태의 삼각형의 인접한 두 변에 대한 두 벡터가 있다고 가정합니다. 우리의 임무는 삼각형의 면적을 찾는 것입니다. 삼각형의 넓이는 두 벡터의 외적 크기입니다. (|A x B|) $$\frac{1}{2}\rvert \vec{A}\times\vec{B}\rvert=\frac{1}{2}\sqrt{\lgroup y_{1}*z_{2}- y_{2}*z_{1}\r그룹^{2}+\l그룹 x_{1}*z_{2}-x_{2}*z_{1}\r그룹^{2}+\l그룹 x_{1} *y_{2}-x_{2}*y_{1}
여기서는 ceil() 함수를 사용하지 않고 a/b의 상한값을 얻는 방법을 살펴보겠습니다. a =5, b =4이면 (a/b) =5/4입니다. 천장(5/4) =2. 이를 해결하기 위해 다음과 같은 간단한 공식을 따를 수 있습니다. - $$ceil\l그룹 a,b\rgroup=\frac{a+b-1}{b}$$ 예시 #include<iostream> using namespace std; int ceiling(int a, int b) { return (a+b-1)/b; } int main() {
크기가 M x N인 행렬이 있다고 가정합니다. 최대 합을 갖는 열을 찾아야 합니다. 이 프로그램에서는 까다로운 접근 방식을 따르지 않고 열별로 배열을 탐색한 다음 각 열의 합계를 구하고 합계가 최대값이면 합계와 열 인덱스를 인쇄합니다. 예시 #include<iostream> #define M 5 #define N 5 using namespace std; int colSum(int colIndex, int mat[M][N]){ int sum = 0; for(int i = 0;
여기서 우리는 주어진 행렬의 두 대각선의 합 사이의 차이를 구하는 방법을 볼 것입니다. N x N 차수의 행렬이 있다고 가정하고 1차 대각선과 2차 대각선의 합을 구하고 그 차를 구해야 합니다. 주대각선을 얻으려면 행 인덱스와 열 인덱스가 동시에 증가한다는 것을 알고 있습니다. 두 번째 대각선의 경우 행 인덱스 및 열 인덱스 값은 row_index =n – 1 – col_index 공식으로 증가합니다. 합계를 구한 후 차액을 취하여 결과를 반환합니다. 예시 #include<iostream> #include<cmath
여기에서 정렬되지 않은 배열에서 바닥과 천장을 찾는 방법을 살펴보겠습니다. 하한값은 x보다 작거나 같은 큰 요소이고 상한값은 x보다 큰 가장 작은 값입니다. 배열 A =[5, 6, 8, 9, 6, 5, 5, 6]이고 x가 7이면 하한값은 6이고 상한값은 8입니다. 이 문제를 해결하기 위해 선형 탐색 접근 방식을 따릅니다. 배열을 탐색하고 x를 기준으로 두 거리를 추적합니다. x보다 크거나 같은 요소의 최소 거리 x보다 작거나 같은 요소의 최소 거리 마지막으로 최소 거리의 인쇄 요소 예시 #include<iostream&g
산술 평균과 기하 평균을 사용하여 조화 평균을 구하는 방법을 살펴보겠습니다. 이 세 가지 평균의 공식은 다음과 같습니다. - 산술 평균 - (a + b)/2 기하 평균 − $$\sqrt{\lgroup a*b\rgroup}$$ 조화 평균 - 2ab/(a+b) 조화 평균은 다음 공식을 사용하여 산술 평균과 기하 평균을 사용하여 표현할 수 있습니다. - $$HM=\frac{GM^{2}}{AM}$$ 예 #include <iostream> #include <cmath> using namespace std; dou
AP의 첫 번째 요소와 미분값이 있다고 가정합니다. 주어진 숫자 n이 AP의 일부인지 확인해야 합니다. 첫 번째 항이 a =1이면 differenced =3, 항 x =7이 확인됩니다. 대답은 예입니다. 이 문제를 해결하기 위해 다음 단계를 따르십시오 - d가 0이고 a가 x이면 true를 반환하고 그렇지 않으면 false를 반환합니다. 그렇지 않고 d가 0이 아니면 x가 시퀀스 x =a + n * d에 속하면 (n - a)/c가 음이 아닌 정수인 경우에만 여기서 n은 음이 아닌 정수입니다. . 예 #include <io
직사각형은 두 좌표, 즉 왼쪽 위 모서리와 오른쪽 아래 모서리를 사용하여 나타낼 수 있다는 것을 알고 있습니다. 두 개의 직사각형이 있다고 가정하고 이 두 개의 중첩 여부를 확인해야 합니다. 4개의 좌표점(l1, r1)과 (l2, r2)가 있습니다. l1은 첫 번째 직사각형의 왼쪽 상단 모서리입니다. r1은 첫 번째 직사각형의 오른쪽 하단 모서리입니다. l2는 두 번째 직사각형의 왼쪽 상단 모서리입니다. r2는 두 번째 직사각형의 오른쪽 하단 모서리입니다. 직사각형이 좌표축에 평행하다고 가정했습니다. 이를 해결하기 위해서는 몇
요소 x가 있다고 가정하고 x의 가장 큰 소인수를 찾아야 합니다. x의 값이 6이면 가장 큰 소인수는 3입니다. 이 문제를 해결하기 위해 숫자를 숫자의 제수로 나누어 인수분해하고 최대 소인수를 추적합니다. 예시 #include <iostream> #include<cmath> using namespace std; long long getMaxPrimefactor(long long n) { long long maxPF = -1; while (n % 2 == 0) { &
여기서는 마지막 두 자리를 구하는 방법을 살펴보겠습니다. N 계승의 합에 대한 단위 자릿수와 십 자릿수입니다. 따라서 N =4이면 1이 됩니다! + 2! + 3! + 4! =33. 따라서 단위 자리는 3이고 10자리는 3입니다. 결과는 33입니다. 10 이후에는 10자리가 0으로 유지됩니다. N =10 이상이면 00이 됩니다. N =1에서 10까지의 계승 수에 대한 차트를 만들 수 있습니다. 다음 단계를 사용하여 이 문제를 해결할 수 있습니다. − n의 값이 10보다 작으면 (1! + 2! + … + n!) mod 10 그
여기서 우리는 구조체 배열에서 최대값을 얻는 방법을 볼 것입니다. 아래와 같은 구조체가 있다고 가정합니다. 해당 구조체 유형의 배열에서 최대 요소를 찾아야 합니다. struct Height{ int feet, inch; }; 아이디어는 간단합니다. 배열을 탐색하고 배열 요소의 최대값을 인치 단위로 추적합니다. 여기서 값은 12*피트 + 인치입니다. 예시 #include<iostream> #include<algorithm> using namespace std; struct Height{
여기서 우리는 주어진 숫자의 최소 합을 구하는 방법을 볼 것입니다. 숫자가 12라고 가정합니다. 우리는 이것을 다른 방식으로 인수분해할 수 있습니다 - 12 =12 * 1 (12 + 1 =13) 12 =2 * 6 (2 + 6 =8) 12 =3 * 4 (3 + 4 =7) 12 =2 * 2 * 3 (2 + 2 + 3 =7) 최소 합은 7입니다. 우리는 숫자를 취하고 최소 요소 합을 찾으려고 노력할 것입니다. 최소 인수 합을 얻으려면 가능한 한 오랫동안 숫자를 인수분해해야 합니다. 즉, 소인수를 더하여 합 S를 구하면 합이 최소화된
세 개의 정수 A, B, N이 있다고 가정합니다. A와 B 사이에서 N개의 산술 평균을 찾아야 합니다. A =20, B =32, N =5이면 출력은 22, 24, 26, 28, 30 작업은 간단합니다. A와 B가 해당 시퀀스의 첫 번째 및 마지막 항인 산술 진행에 N개의 요소를 삽입해야 합니다. A1, A2, … An은 n 산술 수단입니다. 따라서 시퀀스는 A, A1, A2, … An, B. 그래서 B는 수열의 (N + 2)번째 항입니다. 그래서 우리는 다음 공식을 사용할 수 있습니다 - $$B=A+\l그룹 N+2-1\r그룹*d
세 개의 정수 A, B, N이 있다고 가정합니다. A와 B 사이에서 N 기하 평균을 찾아야 합니다. A =2, B =32, N =3이면 출력은 4, 8, 16 작업은 간단합니다. 기하학적 진행에 N개의 요소를 삽입해야 합니다. 여기서 A와 B는 해당 시퀀스의 첫 번째 및 마지막 항입니다. G1, G2, … Gn은 n 기하 평균입니다. 따라서 시퀀스는 A, G1, G2, … Gn, B. 따라서 B는 시퀀스의 (N + 2) 번째 항입니다. 그래서 우리는 다음 공식을 사용할 수 있습니다 - $$B=A*R^{N+1}$$ $$R^{N+
두 개의 문자열 str1과 str2가 있다고 가정하고 길이가 L인 마법의 쌍을 찾아야 합니다. 모든 인덱스 I에 대해 str1[i]
n개의 요소로 구성된 배열이 있다고 가정합니다. 배열에서 XOR이 0이 되는 쌍의 수를 찾아야 합니다. XOR이 0이면 x =y인 쌍 (x, y)입니다. 이 문제를 해결하기 위해 배열을 정렬할 수 있습니다. 그런 다음 두 개의 연속 요소가 같으면 개수를 늘립니다. 모든 요소가 동일한 경우 마지막 개수는 계산되지 않을 수 있습니다. 이 경우 마지막 요소와 첫 번째 요소가 동일한지 확인하고 같으면 1씩 증가시킵니다. 예시 #include<iostream> #include<algorithm> using namespa
두 개의 문자열 S와 T가 있고 S의 길이가 n이고 T의 길이가 n + 1이라고 가정합니다. T는 S에 있는 모든 문자를 보유하지만 하나의 추가 문자를 보유합니다. 우리의 임무는 효율적인 접근 방식을 사용하여 추가 캐릭터를 찾는 것입니다. 이 문제를 해결하기 위해 우리는 하나의 빈 해시 테이블을 취하고 두 번째 문자열의 모든 문자를 삽입한 다음 첫 번째 문자열에서 각 문자를 제거하고 나머지 문자는 추가 문자입니다. 예 #include<iostream> #include<unordered_map> using na
정수 배열이 있다고 가정하고 그 배열은 암호화된 배열입니다. 배열이 A =[10, 14, 12, 13, 11]이고 원래 배열이 B =[5, 1, 3, 2, 4라고 가정하겠습니다. ], 우리는 A의 인덱스 I에 있는 각 요소가 다음 규칙을 따른다는 것을 알 수 있습니다. A[i] =B[j]의 위치 j에 있는 모든 요소의 합, 여기서 I ≠ j. 우리의 임무는 암호화된 배열에서 원래 배열을 찾는 것입니다. 작업은 산술 관찰을 기반으로 합니다. 배열의 크기가 4이고 원래 배열 B에 4개의 요소 B =[a, b, c, d]가 있다고 가정