분할정복 2

[백준 1629] 곱셈

곱셈 문제설명 주어진 수 A,B,C가 입력되면 A를 B번 곱한 수를 C로 나눈 나머지를 출력하자 알고리즘 값을 각각 입력받고 POW함수에 인자를 전달해준다. B(제곱 수)가 0이면 1을 반환하고 1이면 A%C를 준다. 위의 두 경우가 아니면 B를 2로 나누고 그 함수의 나머지를 구한다. 위의 값을 짝수일때는 제곱해서 나머지를 구한다. 홀수인 경우 다시 A를 곱해서 제곱수를 짝수로 만들어서 나머지를 구해준다. #include #include //modular 연산 XYmodM=(XmodM*YmodM)mod M using namespace std; long long A, B, C; long long int POW(long long A, long long B, long long C) { if (B == 0) ..

Algorithm 2021.07.30

[백준 2630] 색종이 만들기

색종이 만들기 문제설명 정사각형 형태의 색종이의 가로 세로 길이가 입력된다. 이때 항상 N=2^k이다. 색종이 각 칸은 흰색(0) 또는 파란색(1)로 칠해져 있고 종이를 잘랐을 때 모두 같은 색이 아니면 4등분 한다. 이 과정을 더 이상 자를 수 없을 때까지 반복한다. 그리고 흰색 종이의 수와 파란색 종이의 수를 출력한다. 알고리즘 색종이의 가로(=세로)길이를 입력 받고 각 칸마다 흰색은 0 파란색은 1로 입력 받는다. 가로 길이와 0,0을 divide 함수로 전달한다. 만약 num이 1인 경우에는 더 이상 나눌 수 없기 때문에 색깔을 판별하여 올려준다. divide 함수에서는 각 칸의 흰색칸과 파란색 칸의 수를 세어서 현재 함수의 num(가로, 세로)의 제곱 수와 일치하는지 확인한다. 일치하면 더 이상..

Algorithm 2021.07.28