여기서는 두 수의 공약수를 구하는 방법을 알아보겠습니다. 모든 공약수를 찾지는 않겠지만 공약수가 몇 개인지 계산할 것입니다. 두 숫자가 12와 24와 같으면 공약수는 1, 2, 3, 4, 6, 12입니다. 따라서 공약수가 6개이므로 답은 6입니다. 알고리즘 countCommonDivisor(a, b) begin count := 0 gcd := gcd of a and b for i := 1 to square root of gcd, do &n
여기서 우리는 두 개 이상의 숫자의 gcd를 얻는 방법을 볼 것입니다. 두 숫자의 gcd를 찾는 것은 쉽습니다. 두 개 이상의 숫자의 gcd를 찾으려면 gcd의 결합 규칙을 따라야 합니다. 예를 들어, {w, x, y, z}의 gcd를 찾으려면 {gcd(w,x), y, z}, 그러면 {gcd(gcd(w,x), y) , z}, 그리고 마지막으로 {gcd(gcd(gcd(w,x), y), z)}. 배열을 사용하면 매우 쉽게 수행할 수 있습니다. 알고리즘 gcd(a,b) begin if a is 0, then &nb
이 문제에서 우리는 X로 나눌 수 있는 가장 작은 K 자리 숫자를 찾으려고 노력할 것입니다. 이 작업을 수행하기 위해 이 공식(10^(k-1))에 의해 가장 작은 K 자리 숫자를 취합니다. 그런 다음 숫자가 X로 나누어 떨어지는지 확인하고 그렇지 않은 경우 이 공식을 사용하여 정확한 숫자를 얻습니다. (min+ 𝑋)−((min+ 𝑋) 𝑚𝑜𝑑 𝑋) 한 가지 예는 29로 나눌 수 있는 5자리 숫자와 같습니다. 따라서 가장 작은 5자리 숫자는 10000입니다. 이것은 29로 나눌 수 없습니다. 이제 공식을 적용하여
암호 산술 문제에서 일부 문자는 숫자를 할당하는 데 사용됩니다. 10개의 다른 문자가 산술 연산을 올바르게 수행하기 위해 0에서 9까지의 숫자 값을 보유하는 것과 같습니다. 두 단어가 주어지고 그 두 단어에 대한 덧셈의 답으로 다른 단어가 주어집니다. 예를 들어 BASE와 BALL이라는 두 단어가 있고 결과는 GAMES라고 말할 수 있습니다. 이제 기호 숫자로 BASE와 BALL을 추가하려고 하면 GAMES라는 답이 나옵니다. 참고 - 최대 10자여야 하며, 그렇지 않으면 해결할 수 없습니다. 입력 이 알고리즘은 세 단어를 사용
이 문제에서 우리는 처음 n개의 자연수의 제곱의 합을 구하는 방법을 볼 것입니다. 여기서 우리는 1에서 n까지 실행되는 하나의 for 루프를 사용하고 있습니다. 각 단계에서 항의 제곱을 계산한 다음 합계에 더합니다. 이 프로그램은 완료하는 데 O(n) 시간이 걸립니다. 그러나 이것을 O(1) 또는 일정한 시간으로 풀고 싶다면 이 급수 공식을 사용할 수 있습니다 - 알고리즘 사각형(n) begin sum := 0 for i in range 1 to n, do
여기서 우리는 문자열을 n번 연결하는 방법을 볼 것입니다. n 값은 사용자가 제공합니다. 이 문제는 매우 간단합니다. C++에서는 연결을 위해 + 연산자를 사용할 수 있습니다. 아이디어를 얻으려면 코드를 살펴보십시오. 알고리즘 concatStrNTimes(str, n) begin res := empty string for i in range 1 to n, do res := concatenate res and res done &
문자열에서 모음을 얻으려면 문자열의 각 문자를 반복해야 합니다. 여기서 포인터를 사용하여 문자열을 이동해야 합니다. 이를 위해서는 C 스타일 문자열이 필요합니다. 문자열이 str로 가리키는 경우 *str은 처음에 첫 번째 문자를 유지합니다. 그런 다음 str이 증가하면 *str은 다음 문자를 가리킵니다. 문자가 [a,e,i,o,u] 또는 [A, E, I, O, U]에 있으면 모음입니다. 그래서 우리는 수를 늘릴 것입니다 알고리즘 countVowels(str) begin count := 0 &nbs
여기서 우리는 주어진 급수의 합을 구하는 방법을 볼 것입니다. n의 값은 사용자가 제공합니다. 계승 함수를 만들어 이 문제를 해결할 수 있고 루프의 각 단계에서 계승을 얻을 수 있습니다. 그러나 계승 계산은 일반 덧셈보다 비용이 많이 드는 작업입니다. 다음 항목에서 이전 계승 용어를 사용할 것입니다. 3처럼! (3 * 2 * 1)이고 4입니다! 는 4 * 3입니다!. 따라서 3을 저장하면! 어떤 변수에, 우리는 그것을 사용하고 다음 계승을 쉽게 얻기 위해서만 다음 숫자를 추가할 수 있습니다. 알고리즘 sum_series_fact(n
이 섹션에서는 C++를 사용하여 파일 내용을 단어 단위로 읽는 방법을 볼 것입니다. 작업은 매우 간단합니다. 파일 내용을 읽으려면 파일 입력 스트림을 사용해야 합니다. 파일 스트림은 파일 이름을 사용하여 파일을 연 다음 FileStream을 사용하여 각 단어를 로드하고 word라는 변수에 저장합니다. 그런 다음 각 단어를 하나씩 인쇄하십시오. 알고리즘 read_word_by_word(파일명) begin file = open file using filename while file has
여기에서 우리는 다른 영역에서 우리를 도울 수 있는 C++ 프로그래밍 언어의 몇 가지 좋은 트릭을 볼 것입니다. 경쟁적인 프로그래밍 이벤트에 참여하려는 경우 이러한 트릭을 사용하면 코드 작성 시간을 줄이는 데 도움이 됩니다. 이러한 예를 하나씩 살펴보겠습니다. % 연산자를 사용하지 않고 숫자가 홀수인지 짝수인지 확인합니다. 이 트릭은 간단합니다. 숫자와 1로 비트 AND 연산을 수행할 수 있습니다. 결과가 0이 아니면 홀수이고 그렇지 않으면 짝수입니다. 논리가 너무 간단합니다. 모든 홀수는 LSb에서 1을 갖습니다. 따라서 A
여기서 우리는 Aliquot 합계가 무엇인지 볼 것입니다. n의 부분 표본 합은 n을 제외한 n의 모든 완전 인수의 합입니다. 예를 들어 숫자가 20이면 완전 인수는 (1, 2, 4, 5, 10)입니다. 따라서 Aliquot의 합계는 22입니다. 한 가지 흥미로운 사실은 숫자의 Aliquot 합계가 숫자 자체인 경우 해당 숫자는 완전한 숫자라는 것입니다. 예:6. 요인은 (1, 2, 3)입니다. 부분 표본 합계는 1+2+3=6입니다. 다음 알고리즘을 사용하여 Aliquot 합계를 얻는 방법을 살펴보겠습니다. 알고리즘 getAli
여기에서 N까지 모든 대체 소수를 인쇄하는 방법을 볼 것입니다. 대체 소수는 아래와 같습니다. N =15라고 가정합니다. 따라서 N까지의 소수는 {2, 3, 5, 7, 11, 13}입니다. 대체 소수는 {2, 5, 11}입니다. 이 문제를 해결할 수 있는 방법을 살펴보겠습니다. 알고리즘 printAlternatePrime(N) Begin define one Boolean array prime of size N + 1, and fill with 1. for p := 2, p^2 is le
산술 평균은 숫자의 평균입니다. 이 프로그램에서 우리는 숫자 집합에서 산술 평균을 찾는 방법을 볼 것입니다. 이 함수는 세트 수와 요소 수를 취합니다. Out 작업은 각 요소를 추가한 다음 전달된 요소 수로 나누는 것입니다. 알고리즘 arithmeticMean(데이터 세트, n) begin sum := 0 for each element e from dataset, do sum := sum + e done  
여기서 우리는 복소수에 대한 asin() 메서드를 볼 것입니다. 복소수는 복소수 헤더 파일을 사용하여 사용할 수 있습니다. 해당 헤더 파일에는 asin() 함수도 있습니다. 이것은 일반 asin() 함수의 복잡한 버전입니다. 이것은 복소수의 복소 아크 사인을 찾는 데 사용됩니다. 이 함수는 복소수를 입력 매개변수로 사용하고 아크 사인을 출력으로 반환합니다. 아이디어를 얻기 위해 한 가지 예를 살펴보겠습니다. 예시 #include<iostream> #include<complex> using namespace s
여기에서 우리는 복소수에 대한 tan() 메서드를 볼 것입니다. 복소수는 복소수 헤더 파일을 사용하여 사용할 수 있습니다. 해당 헤더 파일에는 atan() 함수도 있습니다. 이것은 일반 tan() 함수의 복잡한 버전입니다. 이것은 복소수의 복소 호 탄젠트를 찾는 데 사용됩니다. 이 함수는 복소수를 입력 매개변수로 사용하고 arc tan을 출력으로 반환합니다. 아이디어를 얻기 위해 한 가지 예를 살펴보겠습니다. 예시 #include<iostream> #include<complex> using namespace
BFS(Breadth First Search) 탐색은 주어진 그래프의 모든 노드를 방문하는 데 사용되는 알고리즘입니다. 이 탐색 알고리즘에서는 하나의 노드를 선택한 다음 모든 인접 노드를 하나씩 방문합니다. 인접한 꼭짓점을 모두 완료한 후 더 이동하여 다른 꼭짓점을 확인하고 인접 꼭짓점을 다시 확인합니다. 경쟁 코딩에서는 문제를 매우 빠르게 해결해야 합니다. 우리는 이 알고리즘을 구현하기 위해 STL(Standard Library of C++)을 사용할 것입니다. 우리는 Queue 데이터 구조를 사용해야 합니다. 모든 인접 정
여기서 우리는 C++에서 문자열 길이를 얻는 다섯 가지 다른 방법을 볼 것입니다. C++에서는 기존의 문자 배열 문자열을 사용할 수 있으며 C++에는 String 클래스도 있습니다. 다른 영역에는 문자열 길이를 계산하는 다른 방법이 있습니다. C++ String 클래스에는 length() 및 size() 함수가 있습니다. 이들은 문자열 유형 객체의 길이를 얻는 데 사용할 수 있습니다. 문자열과 같은 전통적인 C의 길이를 얻으려면 strlen() 함수를 사용할 수 있습니다. cstring 아래에 있습니다. 헤더 파일. 또 다른 두
칵테일 정렬은 버블 정렬의 또 다른 변형입니다. 버블 정렬 방식에서는 항상 왼쪽에서 오른쪽으로 검색하여 마지막에서 가장 큰 요소를 찾고 두 번째 단계에서는 두 번째 마지막 위치에서 두 번째로 큰 요소를 찾습니다. 이 정렬 기술은 양방향으로 교대로 횡단합니다. 아이디어를 이해하는 알고리즘을 살펴보겠습니다. 알고리즘 칵테일(배열, n) Begin flag := true start := 0, end := n-1 while flag is set, do &nb
빗 정렬과 버블 정렬의 기본 개념은 동일합니다. 즉, 빗 정렬은 버블 정렬을 개선한 것입니다. 버블 정렬 기법에서는 항목을 각 단계에서 다음 항목과 비교합니다. 그러나 빗 정렬의 경우 항목이 특정 간격으로 정렬됩니다. 각 단계를 완료하면 간격이 줄어듭니다. 이 정렬의 감소 계수 또는 축소 계수는 1.3입니다. 각 단계를 완료한 후 간격을 1.3으로 나눈다는 의미입니다. 시간 복잡도는 최상의 경우 O(n log n)입니다. O(n2 /2nP ) (p는 증분 수) 평균 케이스 및 O(n2 ) 최악의 경우. 알고리즘 CombSort(배열
여기서 우리는 gnome 정렬이 어떻게 작동하는지 볼 것입니다. 이것은 또 다른 정렬 알고리즘입니다. 이 접근 방식에서는 목록이 이미 정렬되어 있으면 O(n) 시간이 걸립니다. 따라서 최상의 시간 복잡도는 O(n)입니다. 그러나 평균 경우와 최악의 경우 복잡도는 O(n^2)입니다. 이제 이 정렬 기술에 대한 아이디어를 얻기 위한 알고리즘을 살펴보겠습니다. 알고리즘 gnomeSort(arr, n) begin index := 0 while index < n, do &nbs