본문 바로가기

백준

(500)
[백준 11401번] 이항 계수 3 (C++) 문제링크 : https://www.acmicpc.net/problem/11401 11401번: 이항 계수 3 자연수 \(N\)과 정수 \(K\)가 주어졌을 때 이항 계수 \(\binom{N}{K}\)를 1,000,000,007로 나눈 나머지를 구하는 프로그램을 작성하시오. www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; const int MOD = 1000000007; ll func(ll a, ll b) //분할 거듭제곱 { ll tmp = 1; while(b) { if(b%2) tmp = tmp * a % MOD; //홀수 a = a * a % MOD..
[백준 13172번] Σ (C++) 문제링크 : https://www.acmicpc.net/problem/13172 13172번: Σ 모듈러가 11에서 1,000,000,007이 되어 답이 달라졌지만, 역시 3을 곱한 다음 1,000,000,007으로 나눈 나머지는 7이 된다. www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; const int MOD = 1000000007; int M, N, S; ll func(ll a, ll b) //분할 거듭제곱 { ll tmp = 1; while(b) { if(b%2) tmp = tmp * a % MOD; //홀수 a = a * a % MOD; //..
[백준 11054번] 가장 긴 바이토닉 부분 수열 (C++) 문제링크 : https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int arr[1001]; int dp_plus[1001]; int dp_minus[1001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int N; cin >> N; for(..
[백준 14502번] 연구소 (C++) 문제링크 : https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int N, M, result = 0; int arr[8][8]; //원본 int arr2[8][8]; //감염 int wall[8][8]; //벽 int dx[] = {1, -1, 0 , 0}; int dy[] = {0, 0..
[백준 28293번] 자릿수 (C++) 문제링크 : https://www.acmicpc.net/problem/28293 28293번: 자릿수 첫째 줄에 정수 $a$, $b$가 공백으로 구분되어 주어진다. $(1 \le a \le 10\,000; 1 \le b \le 10\,000\,000)$ $a^b$의 자릿수가 $10\,000$ 또는 $9,999$로 시작하지 않는 입력만 주어진다. www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int a, b; cin >> a >> b; ll result =..
[백준 15686번] 치킨 배달 (C++) 문제링크 : https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; vector house; //집 vector chicken; //전체 치킨 집 vector choice; //선택한 치킨 집 int arr[51][51]; bool visited[14]; in..
[백준 10830번] 행렬 제곱 (C++) 문제링크 : https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; typedef vector matrix; ll N, B; matrix multiply(matrix &a, matrix &b) { matrix temp(N, vector(N)); for(int i=0; i> B; matrix ar..
[백준 2206번] 벽 부수고 이동하기 (C++) 문제링크 : https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int N, M; int arr[1001][1001]; bool visited[1001][1001][2]; //0 : 벽 안부숨, 1 : 벽 부숨 int dx[] = {1, -1, 0, 0..