본문 바로가기
반응형

수학42

36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 삼성 C형 전체 링크 참고 - 타입 캐스팅으로 입력 빨리 받기, 비트 연산으로 메모리 압축하기 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 아래와 같이 10자리 문자열로 된 숫자가 있다고 가정하자. char number10[] = "1234567890"; 이 문자열로 된 숫자를 int로 바꾸려면 for문을 10번 순회해야 한다. #include char number10[] = "12345678.. 2023. 8. 26.
36진법 긴자리 두 수의 곱셈 with 36^5진법 삼성 C형 전체 링크 참고 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input BOJ 2338 : 긴자리 계산 with 10^N진법를 참고하여 36^5진법으로 개선이 가능하다. 아래와 같이 진법 계산을 위해 define을 정의하자. (36 ~ 36^5) typedef unsigned long long int ull; #define ONE (36ull) #define TWO (1296ull) #defi.. 2023. 8. 26.
36진법 긴자리 두 수의 곱셈 삼성 C형 전체 링크 참고 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 앞자리가 0이 아닌 100자리 36진법(0 ~ 9, A ~ Z) 두 수를 곱해보자. #include #include #define LENGTH_NUMBER (100 + 1) #define LENGTH_OPERANDS (100 + 1) #define LENGTH_RESULT (200 + 2) #define TC_COUNT (.. 2023. 8. 26.
BOJ 2338 : 긴자리 계산 with 10^N진법 알고리즘 문제 전체 링크 삼성 C형 전체 링크 https://www.acmicpc.net/problem/2338 참고 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 큰 수 A+B with N진법을 참고하여 뺄셈과 곱셈도 마찬가지로 N진법을 적용해보자. 덧셈의 경우 100000000000000000진법까지 가능했지만, 곱셈은 자릿수가 2배로 오르기 때문에 100000000진법(0이 8개)까지만 가.. 2023. 8. 26.
긴자리 후위 표기법 구현하기 삼성 C형 전체 링크 참고 - 후위 표기식 - 중위 표기식 BOJ 1918 : 후위 표기식을 참고하면, 아래의 규칙대로 중위 표기식을 후위 표기식으로 바꿀 수 있다. 1. stack이 비어있거나 열린 괄호 "(" 는 stack에 넣는다. 2. 열린 괄호 "(" 다음의 연산자는 stack에 넣는다. 3. 현재 stack의 가장 위에 있는 연산자보다 우선순위가 큰 연산자는 넣는다. ( * = / > + = - ) 4. 현재 stack의 가장 위에 있는 연산자보다 우선순위가 낮은 연산자가 들어오려고 한다면, 스택이 비거나, 열린 괄호 "(" 가 나오거나 해당 우선순위가 더 커질 때까지 스택을 비우고, 연산자를 넣는다. 5. 닫힌 괄호 ")" 가 나오면 열린 괄호 "(" 가 나올 때까지 스택을 비운다. 이때, .. 2023. 8. 25.
BOJ 2338 : 긴자리 계산 알고리즘 문제 전체 링크 삼성 C형 전체 링크 https://www.acmicpc.net/problem/2338 참고 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 부호가 포함된 A, B의 덧셈, 뺄셈, 곱셈을 해보자. 10진수로 1,000자리가 주어지며, 곱셈 연산에 의해 최대 자릿수는 2,000이다. 큰 수의 정의 큰 수를 정의하기 위해 char 배열, 문자열의 길이, 그리고 부호를 가지는 .. 2023. 7. 29.
BOJ 10757 : 큰 수 A+B with 10^N진법 알고리즘 문제 전체 링크 삼성 C형 전체 링크 https://www.acmicpc.net/problem/10757 참고 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 큰 수 A+B에서 아래의 방법으로 큰 수를 계산했었다. - int로 변경한 후, 뒤집고, 다시 뒤집은 후, char로 변경하기 이 방법을 확장하면 더 빠르게 연산이 가능하다. 매번 배열을 한 칸씩 계산하는 것 보다 배열 한 개에 최.. 2023. 7. 29.
BOJ 10757 : 큰 수 A+B 알고리즘 문제 전체 링크 삼성 C형 전체 링크 https://www.acmicpc.net/problem/10757 참고 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 큰 수의 덧셈은 3가지 방법으로 가능하다. 1. 더 짧은 자리 앞에 긴 자리 수 만큼 '0'을 추가하고 더하기 2. 문자열을 뒤집고 계산한 후, 다시 뒤집기 3. int로 변경한 후, 뒤집고, 다시 뒤집은 후, char로 변경하기 .. 2023. 7. 29.
중위 표기식 직접 연산하기 삼성 C형 전체 링크 참고 - 후위 표기식 - 괄호가 있는 중위 표기식 연산하기 괄호가 없는 경우, 아래의 순서대로 연산하면 중위 표기식을 직접 계산할 수 있다. 1. 숫자를 만나면 현재 숫자(cur)를 저장해둔다. 2. +, - 연산자가 나오면 temp에 현재의 숫자를 곱한다. (temp는 1로 초기화) 3. 그리고 result에 temp를 더한다. 4. *, / 가 나오면 temp에 값을 누적한다. 5. 이후 +, - 연산자가 나오면 2 ~ 3을 실행한다. 6. 모두 종료 후 남은 연산 실행 아래의 식으로 중위 표기식을 연산해보자. operator는 *나 /를 만난 후 저장할 연산자이며, 초기화는 * 로 한다. temp는 1로 초기화하고 - 를 만나게 되면 -1로 초기화한다. 첫 숫자 a를 cur에 .. 2023. 7. 29.
반응형