n * 3.5의 결과를 얻으려면 (n * 2) + n + (n / 2)를 계산해야 합니다. . 비트를 1만큼 왼쪽으로 이동하면 n * 2가 됩니다. 비트를 오른쪽으로 이동하려면 n / 2 . 결과를 얻으려면 추가하십시오. n * 3.5 =(n * 2) + n + (n / 2) 위의 방정식을 확인하기 위해 다른 n 값을 제출할 수 있습니다. 몇 가지 예를 살펴보겠습니다. 입력 2 7 10 출력 7 24 35 알고리즘 숫자 n을 초기화합니다. 왼쪽 시프트 비트 연산자를 사용하여 n * 2 찾기 오른쪽 시프트 비트 연산자를
왼쪽 시프트(<<)를 사용할 수 있습니다. 15를 곱하는 연산자 . shift 1을 왼쪽으로 하면 , 그런 다음 2를 곱합니다. . 주어진 숫자를 4로 왼쪽 시프트하면 , 그러면 16 * n.이 됩니다. 16 * n에서 주어진 숫자를 빼면 15 * n이 됩니다. 또는 8 * n + 4 * n + 2 * n + n으로 나눌 수도 있습니다. 2의 거듭제곱을 쉽게 곱할 수 있습니다. 왼쪽 시프트를 사용합니다. 알고리즘 숫자 n을 초기화합니다. 16 * n을 얻으려면 n <<4를 찾으세요. 위 결과에서 n을 뺍니다. 최종 답변을 반
이 튜토리얼에서는 비트 연산자를 사용하여 주어진 두 숫자를 곱하는 프로그램을 작성할 것입니다. 왼쪽 시프트(<<) 연산자는 곱셈에 사용되는 반면 ) 나눗셈에 사용됩니다. 두 숫자의 곱셈 x, y x * y =(x * 2) * (y / 2)로 쓸 수 있습니다. y가 짝수이면 x * y =(x * y) * (y / 2) + x와 같습니다. 따라서 두 번째 숫자가 홀수일 때마다 결과에 첫 번째 숫자를 더합니다. 문제를 해결하는 단계를 살펴보겠습니다. 알고리즘 두 개의 숫자를 초기화합니다. 두 번째 숫자가 0이 될 때까지 반복하는
문자열 형식으로 두 개의 숫자가 제공됩니다. 우리는 그것들을 곱해야 합니다. 문제를 해결하기 위한 아이디어는 이전 자릿수 곱셈 답과 캐리를 유지하는 것입니다. 이전 자릿수 곱셈 답과 캐리를 사용하여 다음 세트 자릿수 곱셈을 얻을 수 있습니다. 예를 들어 보겠습니다. 입력 15 2 출력 30 알고리즘 문자열의 숫자를 초기화합니다. number_one_length + number_two_length 길이의 문자열을 초기화합니다. 끝에서 첫 번째 숫자를 반복합니다. 끝에서 두 번째 숫자를 반복합니다.
숫자가 포함된 두 개의 연결 목록이 제공됩니다. 연결 리스트로 구성된 두 수를 곱해야 합니다. 두 개의 연결 목록에서 숫자를 구성하여 쉽게 수행할 수 있습니다. 예를 들어 보겠습니다. 입력 1 -> 2 -> NULL 2 -> 3 -> NULL 출력 2 -> 7 -> 6 -> NULL 알고리즘 두 개의 연결 목록을 초기화합니다. 두 개의 숫자를 저장하기 위해 두 개의 변수를 0으로 초기화합니다. 두 연결 목록을 반복합니다. 끝에 각 숫자 변수에 각 숫자를 추가합니다. 결과 숫자를 곱하
숫자가 포함된 두 개의 연결 목록이 제공됩니다. 연결 리스트로 구성된 두 수를 곱해야 합니다. 두 개의 연결 목록에서 숫자를 구성하여 쉽게 수행할 수 있습니다. 예를 들어 보겠습니다. 입력 1 -> 2 -> NULL 2 -> 3 -> NULL 출력 2 -> 7 -> 6 -> NULL 알고리즘 두 개의 연결 목록을 초기화합니다. 두 개의 숫자를 저장하기 위해 두 개의 변수를 0으로 초기화합니다. 두 연결 목록을 반복합니다. 끝에 각 숫자 변수에 각 숫자를 추가합니다. 결과 숫자를 곱하
다항식의 각 항의 계수는 배열로 제공됩니다. 두 다항식을 곱해야 합니다. 예를 들어 보겠습니다. 입력 A = [1, 2, 3, 4] B = [4, 3, 2, 1] 출력 4x6 + 11x5 + 20x4 + 30x3 + 20x2 + 11x1 + 4 알고리즘 두 개의 다항식을 초기화합니다. 2개의 다항식 길이로 새 배열을 만듭니다. 두 개의 다항식을 반복합니다. 첫 번째 다항식에서 한 항을 가져와 두 번째 다항식의 모든 항과 곱합니다. 결과를 다항식에 저장합니다. 구현 다음은 위의 알고리즘을 C
간단한 문제입니다. 모듈로(%) 연산자를 사용하여 주어진 숫자가 29로 나누어 떨어지는지 확인할 수 있습니다. 몇 가지 예를 살펴보겠습니다. 입력 29 254 출력 1 0 알고리즘 구현 다음은 위의 알고리즘을 C++로 구현한 것입니다. #include <bits/stdc++.h> using namespace std; bool isDivisibleBy29(long long n) { return n % 29 == 0; } int main() { cout &
이 튜토리얼에서는 주어진 배열에서 변칙의 수를 찾는 프로그램을 작성할 것입니다. 숫자와 다른 모든 숫자 사이의 절대 차이가 주어진 숫자 k보다 크면 숫자는 주어진 배열의 이상입니다. 예를 들어 보겠습니다. 입력 arr = [3, 1, 5, 7] k = 1 출력 4 모든 숫자와 다른 숫자 사이의 절대 차이는 k보다 큽니다. 알고리즘 배열을 초기화합니다. 배열을 반복합니다. 요소를 가져와 배열을 반복합니다. 두 숫자의 절대차를 구하세요. 절대 차이가 k보다 작거나 같지 않으면 변칙 수를 늘립니다.
두 개의 숫자 n과 k가 주어집니다. 합이 k인 n개의 숫자를 사용하여 구성할 수 있는 배열의 수를 찾아야 합니다. 크기가 N이고 합이 K인 배열의 수는 $\dbinom{k - 1}{n - 1}$입니다. 이것은 합이 k인 n개의 요소를 사용하여 형성할 수 있는 숫자 배열을 찾는 간단한 공식입니다. 예를 들어 보겠습니다. 입력 n = 1 k = 2 출력 1 구성할 수 있는 유일한 배열은 [2]입니다. 입력 n = 2 k = 4 출력 3 구성할 수 있는 배열은 [1, 3], [2, 2], [3, 1]입니다. 알
숫자의 거듭제곱은 언어가 제공하는 반복 곱셈 또는 함수를 사용하여 계산할 수 있습니다. 간단합니다. 여기에서 n의 거듭제곱으로 거듭난 2를 찾아야 합니다. 그리고 결과의 자릿수입니다. 몇 가지 예를 살펴보겠습니다. 입력 5 출력 2 입력 10 출력 4 알고리즘 숫자 n을 초기화합니다. 2n의 값 찾기 . log10(n)의 한계는 숫자 n의 자릿수를 알려줍니다. 찾아서 반납하세요. 구현 다음은 위의 알고리즘을 C++로 구현한 것입니다. #include <bits/stdc++.h> using names
숫자의 거듭제곱은 언어가 제공하는 반복 곱셈 또는 함수를 사용하여 계산할 수 있습니다. 간단합니다. 여기에서 우리는 승격 b를 찾아야 합니다. 그리고 결과의 자릿수입니다. 몇 가지 예를 살펴보겠습니다. 입력 a = 5 b = 2 출력 2 입력 a = 7 b = 6 출력 6 알고리즘 숫자 및 b를 초기화합니다. b의 값 찾기 . log10(n)의 한계는 숫자 n의 자릿수를 알려줍니다. 찾아서 반납하세요. 구현 다음은 위의 알고리즘을 C++로 구현한 것입니다. #include <bits/stdc++.h&g
주어진 4자리 1, 2, 3, 4로 이루어진 n번째 수의 자릿수를 구해야 합니다. 위 4자리의 계열은 다음과 같습니다. 1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24... 위의 시리즈에서 n번째 숫자의 자릿수를 찾아야 합니다. 패턴을 잘 관찰하면 다음과 같은 점을 발견할 수 있습니다. 숫자가 1인 숫자가 4개 있습니다. 2자리 숫자가 16개 있습니다. 패턴은 4의 거듭제곱으로 계속됩니다. 예를 들어보겠습니다. 입력 7 출력 2 시리즈의 7번째 숫자는 13이고 그
문자열에 숫자가 주어집니다. 3으로 나누어 떨어지도록 하려면 제거해야 하는 자릿수를 찾아야 합니다. 최대 2자리 숫자를 제거하여 숫자를 나눌 수 있습니다. 따라서 3으로 나누어 떨어지도록 제거해야 하는 최대 자릿수는 2입니다. 몇 가지 예를 살펴보겠습니다. 입력 92 출력 1 2를 제거하여 3으로 나눌 수 있습니다. 입력 999 출력 0 주어진 숫자 자체는 3의 배수입니다. 알고리즘 문자열의 숫자를 초기화합니다. 숫자의 합을 구하세요. 합계가 3으로 나누어 떨어지면 0을 반환합니다. 합이
행렬의 수정 평균은 다음과 같이 정의됩니다... (sum(row-wise min) + sum(column-wise max)) / (row_size + column_size) 예를 들어 보겠습니다. 1 2 3 4 5 6 7 8 9 평균 =(합(1 + 4 + 7) + 합(7 + 8 + 9)) / (3 + 3) 먼저 평균을 찾은 다음 평균보다 큰 요소의 수를 계산해야 합니다. 위의 예를 취하면 카운트로 3을 얻습니다. 평균인 6보다 큰 3개의 요소가 있습니다. 알고리즘 매트릭스를 초기화합니다. 행별 최소 요소 합계를
숫자와 하위 배열 하한 및 상한 인덱스가 제공됩니다. 주어진 수보다 작거나 같은 요소의 수를 계산해야 합니다. 예를 들어 보겠습니다. 입력 arr = [1, 2, 3, 4, 5, 6, 7, 8] k = 4 lower = 0 upper = 5 출력 4 인덱스 0과 5 사이에 4보다 작거나 같은 4개의 요소가 있습니다. 알고리즘 배열, 숫자 및 하위 배열 인덱스를 초기화합니다. 카운트를 0으로 초기화합니다. 하위 배열의 하위 인덱스에서 하위 배열의 상위 인덱스까지 반복하는 루프를 작성하십시오. 현재 요소가
선주문 순회 결과가 제공됩니다. 루트보다 작은 요소의 수를 찾아야 합니다. 선주문 순회에서 첫 번째 요소는 BST의 루트입니다. 예를 들어 보겠습니다. 입력 preorder_result = [5, 4, 2, 1, 7, 6, 8, 9] 출력 3 루트보다 작은 세 가지 요소가 있습니다. 루트는 5입니다. 알고리즘 선주문 결과를 배열로 초기화합니다. 첫 번째 요소, 즉 BST의 루트를 변수에 저장합니다. 선주문 결과의 두 번째 요소부터 반복하는 루프를 작성하세요. 모든 요소를 루트와 비교합니다.
숫자 문자열이 주어지면 그 안에 있는 짝수 부분 문자열의 개수를 찾아야 합니다. 예를 들어 보겠습니다. 입력 num = "1234" 출력 6 주어진 문자열로 구성할 수 있는 짝수 부분 문자열은 2 12 4 34 234 1234 알고리즘 문자열을 숫자로 초기화합니다. 개수를 0으로 초기화합니다. 문자열을 반복합니다. 문자 0을 빼서 현재 숫자를 가져옵니다. 현재 문자 숫자에서. 숫자가 짝수인지 아닌지 확인하세요. 현재 숫자가 짝수이면 숫자에 1을 더한 인덱스를 추가합니다.
바이너리 문자열 10011을 제공했다고 가정해 보겠습니다. 대체 바이너리 문자열을 만들려면 최소 2자를 10101로 뒤집어야 합니다. 대체 문자열에는 두 가지 가능성이 있습니다. 0 또는 1로 시작합니다. 우리는 두 개의 대안을 확인하고 둘 모두에 필요한 뒤집기 횟수를 계산합니다. 그런 다음 둘 중 최소값을 반환합니다. 예를 들어 보겠습니다. 입력 binary = "10011" 출력 2 문자열을 0으로 시작하면 3번 뒤집어야 합니다. 그리고 문자열을 1로 시작하면 2번 뒤집어야 합니다. 최소값은 2입
숫자 1 양극을 나타내는 반면 0 음극을 나타냅니다. 자석의 두 극은 10입니다. 또는 01. 서로 끌어당기는 자석으로 그룹을 형성할 수 있습니다. 서로 다른 극을 가진 자석은 같은 그룹에 속합니다. 여기에서 N개의 자석이 주어집니다. 그들과 함께 할 수 있는 그룹의 수를 알아야 합니다. 서로 다른 두 개의 자석이 나란히 있을 때마다 새로운 그룹이 형성됩니다. 이 경우 그룹 수를 늘리십시오. 예를 들어 보겠습니다. 입력 magnets = ["10", "01", "01"