여기에서 숫자가 단일 쌍 이상으로 나타나지 않는 범위에서 공동 프라임 쌍의 수를 계산하는 방법을 볼 것입니다. 논리를 논의하기 전에 공소수(co-prime number)가 무엇인지 볼까요? 공소수는 양의 정수 제수가 하나뿐인 숫자, 즉 1입니다. 즉, 이 두 숫자의 GCD가 1이라고 말할 수 있습니다. 여기에서 우리는 하한과 상한을 제공합니다. 하한과 상한이 1과 6이면 세 쌍이 있습니다. (1, 2), (3, 4) 및 (5, 6) 이 문제를 해결하기 위한 접근 방식은 다음과 같습니다. 숫자가 연속적이면 항상 공소수입니다. 따
여기서 우리는 하나의 문제를 볼 것입니다. 우리는 N과 밑수 B가 있습니다. 우리의 임무는 선행 0 없이 밑수 B의 모든 N 자리 숫자를 계산하는 것입니다. 따라서 N이 2이고 B가 2인 경우 4개의 숫자 00, 01, 10, 11이 있습니다. 따라서 이 섹션에서는 그 중 2개만 유효합니다. 이것은 10, 11이며 선행 0이 없습니다. 밑수가 B이면 0에서 B까지 – 1개의 다른 숫자가 있습니다. 그래서 BN 여러 N 자리 값을 생성할 수 있습니다(선행 0 포함). 무시하면 첫 번째 숫자는 0m입니다. BN-1 숫자. 따라서 선행
이 섹션에서는 길이에 관계없이 가능한 모든 문자열을 생성하는 방법을 볼 것입니다. 이것은 문자열을 만들기 위해 각 문자 조합을 사용합니다. 예를 들어 문자열이 ABC이면 다음을 생성합니다. - {A, B, C, AB, BA, BC, CB, CA, AC, ABC, ACB, BAC, BCA, CAB, CBA} 아이디어를 얻기 위해 예제를 살펴보겠습니다. 알고리즘 printAllString(str) Begin n :=문자열의 길이는 str count 가 2^n – 1 카운트할 각 숫자 0에 대해, do sub_str :=범위 0에서 n
여기서 우리는 C 또는 C++에서 system() 함수를 사용하여 놀라운 결과를 볼 수 있습니다. 시스템 기능은 Windows, Linux 및 MAC 운영 체제에 있습니다. Command line에 작성할 수 있는 시스템 명령어를 실행하는 기능입니다. 여기에서는 시스템이 C 또는 C++에서 작동하는 경우 두 가지 사용법을 볼 수 있습니다. 첫 번째는 C++ 프로그램을 사용하여 IP 구성 세부 정보를 가져오는 것입니다. 예시 #include <iostream> #include <cstdlib> using nam
여기에서 n번째 피보나치 항이 10의 배수인지 여부를 확인하는 한 가지 효율적인 방법을 볼 것입니다. 피보나치 항이 {0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987}이라고 가정합니다. 여기 15입니다. (0부터 계산) 피보나치 항은 10으로 나눌 수 있습니다. 16의 경우 true를 반환합니다. 가장 쉬운 방법 중 하나는 주어진 항까지 피보나치 수를 생성하고 10으로 나눌 수 있는지 여부를 확인하는 것입니다. 그러나 이 솔루션은 더 큰 기간에는 작동하지 않기 때
여기에서 우리는 1에서 n까지의 이진수를 생성하는 한 가지 흥미로운 방법을 볼 것입니다. 여기서는 큐를 사용하고 있습니다. 처음에 대기열은 첫 번째 이진수 1을 보유합니다. 이제 대기열에서 요소를 반복적으로 삭제하고 인쇄하고 앞 항목의 끝에 0을 추가하고 앞 시간의 끝에 1을 추가하고 대기열에 삽입합니다. 아이디어를 얻을 수 있는 알고리즘을 살펴보겠습니다. 알고리즘 genBinaryNumbers(n) Begin define empty queue. insert 1 into the queu
여기서는 n보다 작은 모든 소수를 효율적인 방법으로 생성하는 방법을 살펴보겠습니다. 이 접근법에서 우리는 윌슨의 정리를 사용할 것입니다. 그의 정리에 따르면 숫자 k가 소수이면 ((k - 1)! + 1) mod k는 0이 됩니다. 이 아이디어를 얻기 위한 알고리즘을 살펴보겠습니다. 이 아이디어는 큰 정수를 지원하지 않기 때문에 언어와 같은 C 또는 C++에서 직접 작동하지 않습니다. 계승은 많은 수를 생성합니다. 알고리즘 genAllPrime(n) Begin fact := 1 for
여기서 우리는 한 가지 흥미로운 문제를 보게 될 것입니다. 하나의 이진 트리가 있습니다. 우리는 시계 반대 방향으로 나무를 횡단해야 합니다. 순회는 아래와 같을 것입니다 - 순회 순서는 1, 8, 9, 10, 11, 12, 13, 14, 15, 3, 2, 4, 5, 6, 7입니다. 알고리즘 안티클록 트래버스(루트) Begin i := 1, j := height of the tree flag := false while i <= j, do &n
여기서 우리는 주어진 각도에서 호 길이를 구하는 방법을 볼 것입니다. 하나의 원이 주어집니다. 원의 반지름이 주어집니다. 우리의 임무는 반경과 각도를 사용하여 호 길이를 얻는 것입니다. 각도는 도 단위입니다. 여기서 r과 x가 주어진다. L의 값을 찾아야 합니다. 공식은 다음과 같습니다. - 𝐿 = 2𝜋𝑟 ∗ (𝑥/360) 예시 #include <iostream> using namespace std; float getArcLength(float r, float x){ ret
하나의 반원이 주어진다고 가정합시다. 반지름은 R입니다. 길이가 l이고 너비가 b인 직사각형 하나가 반원에 내접되어 있습니다. 이제 반지름이 r인 원이 직사각형에 내접됩니다. 내부 원의 면적을 찾아야 합니다. 반원 안에 내접할 수 있는 가장 큰 직사각형은 길이가 l이고 너비가 b이므로 l과 b의 방정식은 다음과 같습니다. - 이제 직사각형 안에 내접할 수 있는 가장 큰 원은 반지름이 r인 다음과 같습니다. - 예시 #include <iostream> #include <cmath> using
여기에서 사각형 ABCD 내부에 있는 아래 잎과 같은 영역을 구하는 방법을 살펴보겠습니다. 정사각형의 각 변의 길이는 입니다. 잎에는 두 개의 동일한 부분이 있습니다. 각 부분의 면적은 p, 이제 −라고 합니다. 그리고 풀잎의 넓이는 2p입니다. 예시 #include <iostream> using namespace std; float leafArea(float a){ return (a * a * (3.1415/2 - 1)); } int main() { float s
여기서 우리는 반지름이 주어진 n-면 정다각형의 면적을 구하는 방법을 볼 것입니다. 여기서 반지름은 정점의 중심으로부터의 거리입니다. 이 문제를 해결하기 위해 중심에서 한쪽으로 수직인 하나를 그렸습니다. 각 변의 길이를 로 둡니다. 수직은 측면을 두 부분으로 나누는 것입니다. 각 부분의 길이는 a/2입니다. 수직과 하나의 반지름이 각도 x를 만들고 있습니다. 반지름의 길이를 h라고 하자. 여기서 우리는 다각형이 N개의 동일한 삼각형으로 분할된 것을 볼 수 있습니다. 따라서 N면이 있는 다각형의 경우 N개의 삼각형으로 나뉩니다.
여기서는 아래와 같이 로 삼각형의 면적을 계산하는 방법을 살펴보겠습니다. Reuleaux 삼각형은 내부에 하나의 정삼각형이 있습니다. 높이가 h라고 가정하면 이 모양은 세 개의 원의 교차로 만들어집니다. 세 개의 원형 섹터가 있습니다. 각 섹터의 면적은 - 정삼각형의 넓이는 세 번 더하기 때문에 빼야 합니다. 따라서 최종 영역은 - 예시 #include <iostream> #include <cmath> using namespace std; float areaReuleaux(float h) { &n
1인 경우 하나의 순열을 얻는 것입니다. 이러한 순열이 없으면 -1을 반환합니다. 접근 방식은 간단합니다. 우리는 탐욕스러운 접근 방식을 사용할 것입니다. 모든 홀수를 오름차순 또는 내림차순으로 정렬한 다음 모든 짝수를 내림차순 또는 오름차순으로 정렬합니다. 알고리즘 배열N(n) Begin if N is 1, then return 1 if N is 2 or 3, then return -1 as no such permutation is not present eve
n개의 요소(n <10)를 가진 문자열이 있다고 가정합니다. 모음과 자음의 상대적인 위치를 바꾸지 않고 문자열을 배열할 수 있는 방법의 수를 찾아야 합니다. 접근 방식은 간단합니다. 주어진 문자열에서 모음과 자음의 수를 세고 모음만 배열하는 방법의 수를 찾은 다음 자음만 배열하는 방법의 수를 찾은 다음 이 두 결과를 곱하여 다음을 얻습니다. 전체 방법. 알고리즘 arrangeWayCount(str) Begin define an array ‘freq’ to store frequency.
1에서 n까지 n개의 요소가 섞인 순서로 배열이 있다고 가정합니다. 또 다른 정수 K가 주어진다. N명의 사람들이 배드민턴을 치려고 줄을 서 있습니다. 처음 두 명의 플레이어는 게임을 하러 가고, 패자는 대기열 끝에 갑니다. 승자는 대기열에서 다음 사람과 게임을 하는 식으로 진행됩니다. 그들은 누군가가 K 번 연속으로 이길 때까지 플레이할 것입니다. 그러면 그 플레이어가 승자가 됩니다. 대기열이 [2, 1, 3, 4, 5]이고 K =2인 경우 출력은 5가 됩니다. 이제 설명을 참조하십시오 - (2, 1) 플레이, 2승, 따라서
여기서 우리는 한 가지 흥미로운 문제를 보게 될 것입니다. N개의 요소가 있는 하나의 배열 을 가져옵니다. |a[0] - x|와 같은 요소 x를 찾아야 합니다. + |a[1] - x|+ ... + |a[n-1] - x| 최소화됩니다. 그런 다음 최소화된 합계를 찾아야 합니다. 배열을 {1, 3, 9, 6, 3}이라고 합시다. 이제 x는 3입니다. 따라서 합계는 |1 - 3|입니다. + |3 - 3| + |9 - 3| + |6 - 3| + |3 - 3| =11. 이 문제를 해결하려면 배열의 중앙값을 x로 선택해야 합니다. 배열 크
여기서 우리는 한 가지 문제를 보게 될 것입니다. 하나의 배열이 있습니다. 우리의 임무는 빈도가 1보다 큰 요소를 찾는 것입니다. 요소가 {1, 5, 2, 5, 3, 1, 5, 2, 7}이라고 가정합니다. 1번은 2번, 5번은 3번, 2번은 3번, 나머지는 1번만 발생했습니다. 따라서 출력은 {1, 5, 2}가 됩니다. 알고리즘 moreFreq(arr, n) arr의 각 요소 e에 대해 int 유형 키와 int 유형 값으로 맵 정의를 시작하고 각 키에 대해 map.key(arr).value를 증가시킵니다. 값이 1보다 큰지 확인한
하나의 배열이 있다고 가정합니다. 배열에 존재하는 요소의 수를 소수로 계산해야 합니다. 따라서 배열이 {1, 2, 2, 0, 1, 5, 2, 5, 0, 0, 1, 1}이면 1은 4번, 2는 3번, 0은 3번, 5는 2번 나타납니다. 따라서 소수가 발생한 세 개의 요소 {2, 0, 5}가 있습니다. 따라서 개수는 3이 됩니다. 알고리즘 countPrimeOccurrence(arr, n) Begin count := 0 define map with int type key and int typ
여기서 우리는 한 가지 흥미로운 문제를 보게 될 것입니다. 우리는 하나의 배열을 취하고 각 요소를 이전 요소로 나눈 후 각 요소를 취하여 합을 찾습니다. 배열이 {5, 6, 7, 2, 1, 4}라고 가정해 보겠습니다. 그러면 결과는 5 + (6 / 5) + (7 / 6) + (2 / 7) + (1 / 2) + (4 / 1) =12.15238이 됩니다. 개념을 얻기 위한 알고리즘을 살펴보겠습니다. 알고리즘 divSum(arr, n) begin sum := arr[0] for i := 1