-
(재귀)1629 곱셈/1074 ZAlgorithm/baekjoon 2022. 2. 19. 12:10
1.1629 곱셈
https://www.acmicpc.net/problem/1629
1629번: 곱셈
첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.
www.acmicpc.net
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; using ll = long long; ll POW(ll a, ll b, ll c) { if (b == 1) return a % c; ll value = POW(a, b / 2, c); value = value * value % c; if (b % 2 == 0) return value; return value * a % c; } int main() { cin.tie(NULL); cin.sync_with_stdio(false); cout.tie(NULL); ll a, b, c; cin >> a >> b >> c; cout << POW(a, b, c); }
2.1074 Z
https://www.acmicpc.net/problem/1074
1074번: Z
한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을
www.acmicpc.net
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; int function1(int n, int r, int c) { if (n == 0) return 0; int half = 1 << (n - 1);//1을 왼쪽으로 n-1번 이동, half=2^(n-1) if (r < half && c < half) return function1(n - 1, r, c); if (r < half && c >= half) return half*half+ function1(n - 1, r, c - half); if (r >= half && c < half)return 2 * half * half + function1(n - 1, r - half, c); return 3 * half * half + function1(n - 1, r - half, c - half); } int main() { cin.tie(NULL); cin.sync_with_stdio(false); cout.tie(NULL); int n, r, c; cin >> n >> r >> c; cout << function1(n, r, c); }
'Algorithm > baekjoon' 카테고리의 다른 글
(bfs/dfs)4963 섬의 개수 (0) 2022.02.22 1260 DFS와 BFS/11724 연결요소의 개수 (0) 2022.02.20 1978 소수 찾기/2609 최대공약수와 최소공배수 (0) 2022.02.19 1181 단어 정렬/11650 좌표 정렬하기/11651 좌표 정렬하기2/2750 수 정렬하기/10989 수 정렬하기3/10814 나이순 정렬 (0) 2022.02.18 1032 명령 프롬프트/1085 직사각형에서 탈출/1259 팰린드롬수/15829 Hashing (0) 2022.02.14