본문 바로가기

▶ 자연과학/▷ C, C++

【코딩】 C 언어로 큰 수 처리 C 언어로 큰 수 처리 추천글 : 【C 언어】 C 언어 목차 #include #include #define Max 100 /* This program can help you calculate huge numbers (∈ ℕ) */ // Using the function 'strlen()' is not that efficient int max(char *array_I, int array_I_size, char *array_II, int array_II_size){ // array_I ≥ array_II → 1 // array_I array_II_size) return 1; else if(array_II_size > array_I_size) retu..
【코딩】 C 언어로 연속수 C 언어로 연속수 추천글 : 【C 언어】 C 언어 목차 Q. 몇 개(≥ 2)의 연속된 자연수를 더해서 주어진 수를 만드는 방법의 수를 구하라. 예를 들어, 15 = 7 + 8 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5 로서 총 4가지 방법이 존재한다. Lemma. 주어진 수 N에 대해 N = a × b, a = 2k꼴, 2 ∤ b라고 하자. 이때 문제에서 요구하는 방법의 수는 b의 약수의 개수와 같다. Proof. n부터 k개의 자연수를 더하는 것을 고려하자. n + (n + 1) + ··· + (n + k - 1) = (2n + k - 1) ÷ 2 × k = N ⇔ (2n + k - 1) × k = 2N 이때 k가 2N의 약수임을 알 수 있다. 임의의 2N의 약수 k에 대해, n이 정의되..
【코딩】 C 언어로 소인수분해 (Integer Factorization) C 언어로 소인수분해(Integer Factorization) 추천글 : 【C 언어】 C 언어 목차 #include #include /* This source is for integer factorization */ int main(int argc, char *argv[]) { int n; scanf("%d", &n); int i = 2; // "1" is not prime, so starting with "2" is reasonable while(1){ if(n == 1) break; if(n % i == 0){ printf("%d ", i); n = n / i; i --; // primes can devide the given number many times } i ++; } return 0; } 입..
【코딩】 C 언어로 "이상한 나라의 셈법" C 언어로 "이상한 나라의 셈법" 추천글 : 【C 언어】 C 언어 목차 Q. 어떤 나라에서는 이진법을 사용한다. 그런데 그 나라의 사람들은 0이 연속적으로 붙는 수를 싫어한다. 숫자를 셀 때도 0이 연속적으로 붙는 수를 싫어한다. 그래서 다른 나라와 무역을 할 때 어려움이 따른다. 이 나라의 왕은 이 문제를 해결하기 위해 자기 나라 숫자를 십진법으로 바꾸는 프로그램을 만들려고 한다. 왕을 도와 프로그램을 작성하여라. (ref)] 입력 이 왕국에서 사용하는 수 n을 입력한다. (이때 입력되는 것은 이진법이고, 0이 연속적으로 붙는 수는 없다.) (1 ≤ n ≤ 221) 참고 : 1 → 1, 10 → 2, 11 → 3, 101 → 4, 110 → 5, 111 → 6, 1010 → 7 출력 n을 십진법으로 출..
【코딩】 C 언어로 진법변환 (10진법 → n진법) C 언어로 진법변환 (10진법 → n진법) 추천글 : 【C 언어】 C 언어 목차 #include #include #define Converted_Number_Max_size 32 /* This source is for converting a decimal number in n-base system*/ int main(int argc, char *argv[]) { char data[36]; data[0] = '0'; data[1] = '1'; data[2] = '2'; data[3] = '3'; data[4] = '4'; data[5] = '5'; data[6] = '6'; data[7] = '7'; data[8] = '8'; data[9] = '9'; data[10] = 'A'; data[11] = 'B..
【코딩】 C 언어로 계산기(+, -, ×, ÷) 구현하기 C 언어로 계산기(+, -, ×, ÷) 구현하기 추천글 : 【C 언어】 C 언어 목차 #include #include #define Max 100 /* This source is for calculation at practical input situation */ // Devision on this calculator prints quota. // If you want real Devision, you should change the format (Now the format is 'int') int Calculator_I(char *Array, int Array_Size); // seperator; seperate by each monomials; + and - int Calculator_II(char ..
【코딩】 C 언어로 n 이하의 소수, 에라토스테네스의 체 C 언어로 n 이하의 소수, 에라토스테네스의 체 추천글 : 【C 언어】 C 언어 목차 #include #include /* This source is for finding all the primes between 1 and n with Erathosthenes' sieve*/ int main(int argc, char *argv[]) { int n, m; scanf("%d", &n); char c[n+1]; int i, j; int count = 0; for(i=1; i
【코딩】 C 언어로 하노이 탑 (Hanoi Tower) C 언어로 하노이 탑 (Hanoi Tower) 추천글 : 【C 언어】 C 언어 목차 1. 개요 [본문] 2. 최소 이동 횟수 [본문] 3. C 코드 [본문] 1. 개요 [목차] ⑴ 정의 하노이의 탑(Hanoi Tower)은 프랑스의 수학자 뤼카가 1883년 다음과 같은 이야기로 처음 소개한 것으로, n개의 원판을 옮기기 위해 필요한 최소 이동횟수를 구하는 문제이다. ⑵ 설화 인도 베나레스에 있는 한 사원에는 세상의 중심을 나타내는 큰 돔이 있고, 그 안에 3개의 다이아몬드 바늘이 동판 위에 새겨져 있다. 바늘의 높이는 1 큐빗이고, 굵기는 별의 몸통만 하다. 바늘 가운데 하나에는 신이 64개의 순금 원판을 끼워 놓았다. 가장 큰 원판이 바닥에 놓여 있고, 나머지 원판들이 점점 작아지며 꼭대기까지 쌓아 있..