이 섹션에서는 숫자의 모든 짝수 소인수의 합을 효율적으로 구하는 방법을 살펴보겠습니다. n =480이라는 숫자가 있습니다. 이 모든 요소를 가져와야 합니다. 480의 소인수는 2, 2, 2, 2, 2, 3, 5입니다. 모든 짝수 인수의 합은 2+2+2+2+2 =10입니다. 이 문제를 해결하려면 이 규칙을 따라야 합니다. - 숫자가 2의 배수이면 합에 더하고 2로 나누기를 반복합니다. 이제 숫자는 홀수여야 합니다. 따라서 우리는 짝수인 요소를 찾지 못할 것입니다. 그런 다음 이러한 요소를 무시하면 됩니다. 더 나은 아이디어를
이 섹션에서는 숫자의 모든 홀수 소인수의 합을 효율적으로 구하는 방법을 살펴보겠습니다. n =1092라는 숫자가 있습니다. 이 모든 요소를 가져와야 합니다. 1092의 소인수는 2, 2, 3, 7, 13입니다. 모든 홀수 인수의 합은 3+7+13 =23입니다. 이 문제를 해결하려면 다음 규칙을 따라야 합니다. - 2의 배수이면 그 인수를 무시하고 반복해서 2로 나눕니다. 이제 숫자는 홀수여야 합니다. 이제 3부터 시작하여 숫자의 제곱근까지, 숫자가 현재 값으로 나눌 수 있으면 합에 인수를 더하고 현재 숫자로 나누어 숫자를 변경
이 섹션에서는 PL/SQL을 사용하여 숫자의 계승을 찾는 방법을 살펴보겠습니다. PL/SQL 코드에서 일부 명령 그룹은 관련 선언문 블록 내에 배열됩니다. 숫자의 계승은 기본적으로 1에서 n까지의 모든 정수를 곱하는 것입니다. 여기서 n은 주어진 숫자입니다. 그래서 엔! =n * (n – 1) * (n – 2) * … * 2 * 1. 예시(PL/SQL) DECLARE fact number :=1; n number := &1; BEGIN while n &g
문자열이 있다고 가정합니다. 반복되는 첫 번째 문자를 찾아야 합니다. 문자열이 Hello Friends인 경우 첫 번째 반복 문자는 l이 됩니다. l이 차례로 두 개 있기 때문입니다. 이를 해결하기 위해 해싱 기법을 사용합니다. 하나의 해시 테이블을 만들고 각 문자를 하나씩 스캔하고 문자가 없으면 해시 테이블에 삽입하고 이미 있으면 해당 문자를 반환합니다. 예시 #include<iostream> #include<unordered_set> using namespace std; char getFirstRepeat
여기서는 숫자에서 숫자의 빈도를 구하는 방법을 살펴보겠습니다. 숫자가 12452321이고 숫자 D =2이고 빈도가 3이라고 가정합니다. 이 문제를 해결하기 위해 우리는 숫자에서 마지막 숫자를 취한 다음 이것이 d와 같은지 여부를 확인합니다. 그렇다면 카운터를 늘린 다음 숫자를 10으로 나누어 숫자를 줄입니다. 이 프로세스는 d와 같을 때까지 계속됩니다. 번호가 소진되었습니다. 예시 #include<iostream> using namespace std; int countDigitInNum(long long number,
배열이 있다고 가정합니다. n개의 다른 요소가 있습니다. 배열에서 한 요소의 빈도를 확인해야 합니다. A =[5, 12, 26, 5, 3, 4, 15, 5, 8, 4]라고 가정하고 5의 빈도를 찾으려고 하면 3이 됩니다. 이 문제를 해결하기 위해 왼쪽부터 배열을 스캔합니다. 요소가 주어진 숫자와 같으면 카운터를 늘리고, 그렇지 않으면 배열이 소진될 때까지 다음 요소로 이동합니다. 예시 #include<iostream> using namespace std; int countElementInArr(int arr[], int
5의 계승으로 단위 자리는 0이므로 5 이후에는 단위 자리를 변경하는 데 기여하지 않습니다. N =4 이상이면 3이 됩니다. 우리는 단위 장소에 대한 차트를 만들 수 있으며 프로그램에서 사용할 것입니다. 예 #include<iostream> #include<cmath> using namespace std; double getUnitPlace(int n) { int placeVal[5] = {-1, 1, 3, 9, 3}; if(n > 4){ &n
숫자 N이 있다고 가정하고 우리의 임무는 재귀를 사용하여 ln(N!)을 찾는 것입니다. ln()은 기본적으로 로그 기반 e입니다. 이를 해결하기 위해 다음 공식을 사용할 수 있습니다 - $$\ln\l그룹 N!\rgroup=\ln\l그룹 N*\l그룹 N-1\rgroup *\l그룹 N-2\rgroup *\dotsm*2*1\rgroup=\ln\l그룹 N\rgroup+\ ln\l그룹 N+1\r그룹+\dotsm+\ln\l그룹 1\r그룹$$ 예 #include<iostream> #include<cmath> using n
설명 수학에서 메르센 소수는 2의 거듭제곱보다 1이 작은 소수입니다. 즉, 어떤 정수 n에 대해 Mn =2n - 1 형식의 소수입니다. 입력된 양의 정수 n보다 작은 모든 메르센 소수를 출력하는 C++ 프로그램을 작성하십시오. 메르센 소수를 나타내는 지수 n은 2, 3, 5, 7,...이고 결과 메르센 소수는 3, 7, 31, 127입니다. 알고리즘 1. Generate all the primes less than or equal to the given number n 2. Iterate through all numbers o
문제 설명 mid-square 방법은 의사 난수를 생성하는 방법입니다. 이 방법은 John von Neumann에 의해 발명되었으며 1949년 회의에서 설명되었습니다. 이 기술에서는 초기 시드 값을 가져와 제곱합니다. 중간에서 일부 숫자가 추출되고 이 추출된 숫자가 새로운 시드로 사용되는 숫자를 형성합니다. 3456을 시드로 사용합시다. 제곱은 11943936입니다. 중간 4자리를 새 시드(예:9439)로 사용합니다. 정사각형은 89094721입니다. 중간 4자리 숫자를 새 시드로 사용(예:0947)
문제 설명 두 개의 정렬되지 않은 배열을 가져와 정렬된 순서로 새 배열로 병합하는 함수를 작성하세요. arr1[] = {10, 5, 7, 2} arr2[] = {4, 17, 9, 3} result[] = {2, 3, 4, 5, 7, 9, 10, 17} 알고리즘 1. Merge two unsorted array into new array 2. Sort newly create array 예시 #include <iostream> #include <algorithm> #define SIZE(arr) (sizeof(a
문제 설명 두 개의 배열이 주어지면 결합된 배열이 첫 번째와 두 번째 배열의 대체 요소를 갖도록 두 개의 배열을 결합해야 합니다. 배열 중 하나에 추가 요소가 있는 경우 이러한 요소를 결합된 배열의 끝에 추가해야 합니다. arr1[] = {10, 20, 30, 40} arr2[] = {-10, -20, -30, -40} result[] = {10, -10, 20, -20, 30, -30, 40, -40} 알고리즘 1. Traverse both arrays and one by one put elements into result ar
문제 설명 2개의 정렬된 단일 연결 목록이 제공됩니다. 두 개의 정렬된 연결 리스트를 병합하는 함수 작성 20 알고리즘 data data data를 추가하고 list2를 증가시킵니다. 포인터2. 두 목록이 모두 소진될 때까지 절차를 반복합니다3. 결과 목록 반환 예시 #include #include 다음 =NULL; for (int i =1; i 다음 =NULL; }리턴 헤드;} 무효 displayList(노드 * 헤드){ while (헤드 !=NULL) { cout 데이터 다음; } cout 데이터 다음); } 반환 결과;}i
문제 설명 2개의 정렬된 배열 목록이 제공됩니다. 주어진 두 개의 정렬된 배열을 하나로 병합하는 함수를 작성하십시오. Arr1[] = {10,15, 17, 20} Arr2[] = {5, 9, 13, 19} Result[] = {5, 9, 10, 13, 15, 17, 19, 20} 알고리즘 1. Traverse both array 1.1. If arr1[i] < arr2[j] 1.1.1. Add arr[i] to new array
문제 설명 두 개의 바이너리 최대 힙이 배열로 주어지면 단일 최대 힙으로 병합합니다. Heap1[] = {20, 17, 15, 10} Heap2[] = {19, 13, 7} Result[] = {20, 19, 15, 13, 17, 7, 10} 알고리즘 1.Create an array to store result 2. Copy both given arrays one by one to result array 3. Build heap to construct full merged max heap 예시 #include <iostrea
문제 설명 연결된 목록이 주어집니다. 병합 정렬 알고리즘을 사용하여 정렬 List: 10->20->8-17->5->13->4 Sorted list: 4->5->8->10->13->17->20 알고리즘 1. If head is NULL or list contains only one element then return list 2. Create two lists by dividing original list into 2 parts 3. Sort first and second
문제 설명 이중 연결 목록이 주어집니다. 병합 정렬 알고리즘을 사용하여 정렬 List: 10->20->8-17->5->13->4 Sorted list: 4->5->8->10->13->17->20 알고리즘 1. If head is NULL or list contains only one element then return list 2. Create two lists by dividing original list into 2 parts 3. Sort first and secon
문제 설명 임의의 순서로 시간 간격 세트가 주어지면 겹치는 모든 간격을 하나로 병합하고 상호 배타적인 간격만 있어야 하는 결과를 출력합니다. 주어진 간격 집합이 {{12, 14}, {11, 13}, {20, 22}, {21, 23}}이면 간격 {12, 14} 및 {11, 13}이 서로 겹치므로 {11, 14}로 병합합니다. 간격 {20, 22} 및 {21, 23}이 서로 겹치므로 {20, 23}으로 병합합니다. 알고리즘 1. Sort the intervals based on increasing order of st
설명 각각 크기가 m 및 n인 두 개의 문자열 str1 및 str2가 제공됩니다. 작업은 str2로 변환하기 위해 str1에서/에서 최소 문자 수를 삭제하고 삽입하는 것입니다. Str1 = “tutorialspoint” Str2 = “tutorials” To transform str1 to str2 we have to delete five characters i.e. “point” from str1. 알고리즘 1. Find longest common subsequen
문제 설명 크기가 n인 문자열이 주어집니다. 작업은 문자열 회문을 만들기 위해 최소 문자 수를 삭제하는 것입니다. 주어진 문자열이 abcda이면 첫 번째와 마지막을 제외한 2개의 문자를 삭제하여 회문으로 만들 수 있습니다. 문자 b와 c를 삭제하면 ada 문자열은 회문입니다. 문자 c와 d를 삭제하면 aba 문자열은 회문입니다. 문자 b와 d를 삭제하면 aca 문자열은 회문입니다 알고리즘 1. Find longest palindromic subsequence of given string. Let’s