🐣/BOJ(38)
-
10827 c++ - a^b
큰 수 string 계산 c++ 버전. cmath 함수인 pow를 사용하지 못하는 이유는 부동소수점 연산을 사용하여 근사값을 계산하기 때문입니다.부동소수점은 IEEE 754 표준을 따르며, C++의 double 타입은 약 15~17자리 십진수 정밀도를 제공합니다.테스트 케이스를 보면 소수점들이 들어가 있는데 이를 부동소수점으로 저장하면 이진수로 근사 처리되어 미세한 차이가 발생합니다.부동소수점 연산은 각 단계에서 오차를 누적시킵니다. 거듭제곱 연산은 반복 곱셈을 포함하므로, 결과에 포함된 오차가 더 커집니다.#include int main(void) { double s; double p; cin >> s >> p; cout.precision(20); cout 그래서 해당 문제에서는 고정 소수점..
2024.11.17 -
9414 c++ - 프로그래밍 대회 전용 부지
간단한 정렬 문제이다. (그리디)pow의 헤더를 포함 안해줘서 컴파일 에러가 났다. cmath를 이용하면 된다.두번째 틀린 이유는 sum의 오버플로우 이슈 때문이었다.long long으로 고쳐서 제출하니 통과 되었다.https://www.acmicpc.net/problem/9414#include #include #include #include #define INIT_MONEY 5 * 1000000#define FASTIO ios::sync_with_stdio(0), cin.tie(0)using namespace std;int main() { FASTIO; int t; cin >> t; for (int i = 0; i p; while (1) { cin >> m; if (m ..
2024.11.16 -
7453 c++ - 합이 0인 네 정수
이분탐색 문제입니다. 처음엔 해시로 접근했었습니다. 더보기해시 적용첫 풀이. -> 시간초과map을 사용해서 AB의 합을 먼저 구하고, 이후 CD의 합으로 unordered_map으로 접근 O(1) -> N^2 + N^2의 시간으로 풀 수 있을 거라 판단 최악의 경우 4000^2 + 4000^2으로 32,000,000번의 연산으로 충분히 풀 수 있을 거라 생각했습니다.시간초과의 이유 : 캐시히트의 시간까지 고려가 되어야함.더보기#include #include #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0)using namespace std;int main() { FASTIO; int n; cin >> n; vector A(n), B(n), ..
2024.11.15 -
1655 c++ - 가운데를 말해요
우선순위 큐를 사용하는 문제.처음에는 우선순위 큐, vector의 정렬 중간값을 사용해서 풀이를 진행했는데, 시간초과가 났습니다.그래서 우선순위 큐 두개를 사용하여 최대힙, 최소힙을 사용하여 풀었습니다.더보기 더보기vector v; for (int i = 0; i > t; v.push_back(t); sort(v.begin(), v.end(), less()); cout 더보기#include #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0)using namespace std;int n;int main() { FASTIO; cin >> n; priority_queue, greater> pq; queue q; for (int ..
2024.11.14 -
30469 c++ - 호반우가 학교에 지각한 이유 2
소수찾기 문제의 심화버전이다. 알고리즘 분류는 애드 혹이다.체를 사용하여 최적해를 구할 수 있도록 하였다. 더보기 c++ 코드#include #include #include using namespace std;bool prime[100];void savePrime() { memset(prime, true, sizeof(prime)); prime[0] = prime[1] = false; for (int i = 2; i = 10 && c & number) { number[0] = a / 10; number[1] = a % 10; for (int i = 2; i > a >> b >> n; if (!prime[a] || !prime[b]) { cout number(n, 0); if (fin..
2024.11.12