여기서 우리는 ab와 같은 숫자를 표현할 수 있는지 여부를 확인할 것입니다. 숫자 125가 있다고 가정합니다. 이것은 53으로 나타낼 수 있습니다. 다른 숫자 91은 일부 정수 값의 거듭제곱으로 나타낼 수 없습니다. 알고리즘 isRepresentPower(num): Begin if num = 1, then return true for i := 2, i2 <= num, increase i by 1, do val := log(a)/log(i) &n
여기서 b와 같이 숫자를 거듭제곱으로 나타낼 수 있는지 확인합니다. 아니면. 숫자 125가 있다고 가정합니다. 53으로 나타낼 수 있습니다. . 다른 숫자 91은 일부 정수 값의 거듭제곱으로 나타낼 수 없습니다. 알고리즘 isRepresentPower(num): Begin if num = 1, then return true for i := 2, i2 <= num, increase i by 1, do val := log(a)/log(i) &nbs
여기서 xy와 같이 숫자를 거듭제곱으로 나타낼 수 있는지 확인합니다. 아니면. 숫자 125가 있다고 가정합니다. 53으로 나타낼 수 있습니다. . 다른 숫자 91은 일부 정수 값의 거듭제곱으로 나타낼 수 없습니다. 알고리즘 isRepresentPower(num): Begin if num = 1, then return true for i := 2, i2 <= num, increase i by 1, do val := log(a)/log(i) &nb
이 섹션에서는 하나의 수를 두 개의 삼각형 수의 합으로 표현할 수 있는지 여부를 알아보겠습니다. 삼각수는 아래와 같습니다 - 이 예에서 1, 3, 6, 10이 일부 삼각형 숫자임을 알 수 있습니다. 숫자 N(예:16)을 두 개의 삼각형 숫자(6, 10)의 합으로 표현해야 합니다. 접근 방식은 매우 간단합니다. N보다 작은 모든 삼각수를 가져와야 합니다. 이 값으로 집합을 만드세요. 이제 집합에서 X라는 숫자를 가져와서 N – X가 집합에 존재하는지 확인해야 합니다. 그러면 X는 두 개의 삼각형 숫자의 합으로 표시될 수 있습니
여기서 우리는 숫자를 2의 0이 아닌 두 거듭제곱의 합으로 나타낼 수 있는지 확인합니다. 따라서 주어진 숫자 N이 (2x + 2y 0. 숫자가 10이라고 가정하면 23으로 나타낼 수 있습니다. + 21 . 0. 또 다른 경우는 N이 홀수이고 2의 거듭제곱의 합으로 표시될 수 없다는 것입니다. 거듭제곱을 0으로 사용할 수 없으므로 홀수를 얻을 수 없습니다. 모든 홀수에 대해 이진 표현의 LSb는 1 예시 #include <iostream> using namespace std; bool isSumofTwosPower(int
이 섹션에서는 숫자가 트리 연속 숫자로 표시될 수 있는지 여부를 확인할 것입니다. 숫자가 27이라고 가정합니다. 이것은 8 + 9 + 10으로 나타낼 수 있습니다. 이것은 두 가지 다른 접근 방식으로 해결할 수 있습니다. 첫 번째 접근 방식은 Naive 접근 방식입니다. 그 접근 방식에서 우리는 i + (i + 1) + (i + 2)가 숫자와 같은지 확인해야 합니다. 또 다른 효율적인 접근 방식은 숫자가 3으로 나누어 떨어지는지 여부를 확인하는 것입니다. 숫자 x가 3개의 연속적인 1로 표현될 수 있다고 가정하면 x =(y - 1
이 섹션에서는 숫자가 동일한 수의 설정 비트와 설정되지 않은 비트를 갖는지 여부를 확인합니다. 숫자 12가 있다고 가정합니다. 바이너리 표현은 1100입니다. 이것은 0과 1의 수가 같습니다. 접근 방식은 간단합니다. 숫자의 각 비트를 확인하고 1이면 set_bit_count를 늘리고 0이면 unset_bit_count를 늘립니다. 마지막으로 동일하면 true를 반환하고 그렇지 않으면 false를 반환합니다. 예시 #include <iostream> using namespace std; bool hasSameSetUns
여기서 우리는 숫자가 이진 표현에서 인접한 세트 비트를 가지고 있는지 볼 것입니다. 숫자 12에 두 개의 연속 1이 있다고 가정합니다(12 =1100). 이 유형의 숫자를 확인하는 아이디어는 매우 간단합니다. 숫자를 1비트로 이동한 다음 비트별 AND를 수행합니다. 비트 AND 결과가 0이 아닌 경우 연속 1이 있어야 합니다. 예 #include <iostream> using namespace std; bool hasConsecutiveOnes(int n) { if((n & (n >&
여기서 번호가 미스터리 번호인지 확인하는 방법에 대해 알아보겠습니다. 미스터리 넘버(Mystery number)는 두 숫자의 합으로 나타낼 수 있는 숫자로, 그 숫자는 역순이다. 더 나은 아이디어를 얻기 위해 코드를 살펴보겠습니다. 모든 쌍을 확인하고 결정을 찾아야 합니다. 예시 #include <bits/stdc++.h> using namespace std; int revNum(int str) { string s = to_string(str); reverse(s.begin(
여기에서 숫자가 다른 숫자의 거듭제곱인지 여부를 알 수 있습니다. 숫자 125와 다른 숫자 5가 주어졌다고 가정합니다. 따라서 125가 5의 거듭제곱임을 발견하면 true를 반환합니다. 이 경우 true입니다. 125 =53 . 알고리즘 isRepresentPower(x, y): Begin if x = 1, then if y = 1, return true, otherwise false pow := 1 while pow <
여기서 우리는 숫자가 피타고라스 소수인지 여부를 확인하는 또 다른 프로그램을 볼 것입니다. 논리를 살펴보기 전에 피타고라스의 소수가 무엇인지 볼까요? 피타고라스 소수는 4n + 1로 나타낼 수 있는 소수입니다. 수를 검출하려면 그 수가 소수인지 아닌지를 확인해야 하고, 소수이면 그 수를 4로 나누고 나머지가 1이면 피타고라스 소수입니다. 일부 피타고라스 소수는 {5, 13, 17, 29, 37, 41, 53, …} 예시 #include <iostream> using namespace std; bool isPrime(in
여기에서 숫자가 완전 소수인지 여부를 확인하는 방법을 살펴보겠습니다. 숫자가 소수이고 모든 자릿수도 소수인 경우 전체 소수라고 합니다. 숫자가 37이라고 가정하면 이것은 완전 소수입니다. 그러나 9는 소수가 아니므로 97은 완전한 소수가 아닙니다. 한 가지 효율적인 접근 방식은 다음과 같습니다. 먼저 소수가 아닌 숫자가 있는지 확인해야 합니다. 숫자는 0에서 9 사이여야 합니다. 해당 범위에서 2, 3, 5, 7은 소수이고 나머지는 소수가 아닙니다. 모두 소수이면 소수인지 아닌지 확인하십시오. 예시 #include <iost
여기에서 숫자가 Quartan Prime인지 여부를 확인하는 또 다른 프로그램을 볼 수 있습니다. 논리를 살펴보기 전에 Quartan Prime number가 무엇인지 볼까요? Quartan 소수는 x4로 나타낼 수 있는 소수입니다. + y4 0. 그런 수를 검출하려면 그 수가 소수인지 아닌지를 확인해야 하고, 소수이면 그 수를 16으로 나누고, 나머지가 1이면 사분소수이다. 일부 Quartan 소수는 {2, 17, 97, …}입니다. 예시 #include <iostream> using namespace std; boo
숫자 N과 밑수 b가 있습니다. 이 프로그램에서는 숫자가 b진법에서 1로 시작하는지 여부를 확인해야 합니다. 숫자 6이 주어졌다고 가정합니다. 바이너리에서는 110이므로 1로 시작하고 4진법에서도 124가 됩니다. . 여기에서도 1로 시작합니다. 우리가 알다시피, 숫자 N이 밑수 b로 표현되면 b는 m+1 비트 시퀀스 bm bm-1 … b0으로 변환됩니다. 이것은 bm를 의미합니다. bm + bm-1 * bm-1 + ... + b0 *b0 =N. 가장 큰 수는 2*bm입니다. – 1. N은 bm에 있습니다. ≤ N ≤ 2*bm –
이 튜토리얼에서는 두 숫자(예:a와 b)를 찾는 프로그램에 대해 논의할 것입니다. a+b = N and a*b = N are satisfied. 두 방정식에서 a를 제거하면 b와 N에서 이차 방정식을 얻습니다. 즉 b2 - bN + N = 0 이 방정식에는 a와 b의 값을 모두 제공하는 두 개의 근이 있습니다. 근을 찾기 위해 행렬식 방법을 사용하여 a와 b의 값을 다음과 같이 얻습니다. $a=(N-\sqrt{N*N-4N)}/2\\ b=(N+\sqrt{N*N-4N)}/2 $ 예시 #include <iostream>
이 기사에서는 두 개의 서로 다른 주어진 문자열을 비교하는 동안 흔하지 않은 문자를 찾는 프로그램에 대해 논의할 것입니다. 우리가 알고 있듯이 문자열은 문자의 배열일 뿐입니다. 따라서 비교를 위해 한 문자열의 문자를 탐색하고 동시에 해당 요소가 다른 문자열에 존재하는지 확인합니다. 첫 번째 문자열을 A로, 두 번째 문자열을 B로 두면 A - B가 됩니다. . 마찬가지로 B - A를 계산할 수 있습니다. 이 두 결과를 결합하면 얻을 수 있습니다. ( A - B ) ∪ ( B - A ) 즉, 두 문자열 사이에서 흔하지
이 기사에서는 정렬되지 않은 두 배열의 합집합과 교집합을 찾는 프로그램에 대해 설명합니다. 두 배열을 A와 B로 표시합시다. 그런 다음 해당 배열의 합집합은 A ∪ B 로 표시됩니다. 이것은 기본적으로 주어진 두 배열에 있는 모든 요소의 배열입니다. 단, 각 요소는 한 번만 반복됩니다. 이를 찾기 위해 별도의 배열을 만들고 첫 번째 배열의 모든 요소를 복사합니다. 그런 다음 두 번째 배열의 요소를 탐색하고 이것이 이미 Union 배열에 있는지 확인합니다. 그렇지 않은 경우 유니온 배열에 추가합니다. 마찬가지로 두 배열의 교
이 기사에서 우리는 N보다 작거나 같은 요소를 갖고 특정 조건을 따르는 고유한 숫자 쌍을 찾는 프로그램에 대해 논의할 것입니다 - 두 숫자의 차이의 제곱은 두 숫자의 LCM과 같아야 합니다. 이 두 숫자의 HCF는 임의의 두 연속 숫자의 곱으로 나타낼 수 있습니다. 이 문제를 해결하는 가장 좋은 방법은 두 개의 연속 숫자(1부터 시작)를 가져와서 해당 숫자의 곱의 배수를 찾는 것입니다. 그런 다음 배수 중에서 한 쌍의 숫자를 지정하려면 해당 쌍의 숫자가 첫 번째 주어진 조건을 충족하는지 확인해야 합니다. 예를 들어
이 기사에서는 정수(예:X)를 고유한 자연수의 n승의 합으로 표현하는 방법을 찾는 프로그램에 대해 논의할 것입니다. 예를 들어, X =100 및 n =2 그러면 100을 자연수의 제곱의 합으로 표현하는 3가지 방법이 있을 것입니다. 100 = 102 100 = 62 + 82 100 = 12 + 32 + 42 + 52 + 72 이것은 재귀를 사용하여 쉽게 수행할 수 있습니다. 우리는 1에서 시작하여 주어진 숫자의 n번째 루트까지 갈 것입니다. 모든 실행에서 숫자가 보다 작아질 때까지 주어진 숫자에서 자연수의 n승(1부터 시작)을
이 기사에서는 주어진 전제 조건을 기반으로 주어진 모든 작업을 완료할 수 있는지 확인하는 프로그램에 대해 논의할 것입니다. 예를 들어, 세 가지 작업이 주어지고 전제 조건이 [[1, 0], [2, 1], [3, 2]]라고 가정해 보겠습니다. ( [1,0]은 1 작업을 선택하기 위해 0 작업을 먼저 완료해야 함을 의미합니다.) 그런 다음 이 예에서는 0 작업에 전제 조건이 없으므로 먼저 완료할 수 있습니다. 그러면 0 작업이 완료되었으므로 1 작업이 완료될 수 있습니다. 마찬가지로 2와 3 작업도 완료할 수 있습니다. 따라서