[BOJ][구현][브3][1009] 분산처리
문제 링크
첫 번째 풀이
알고리즘
ACM호텔문제에서 사용했던 방법을 사용합니다.
h,w,n를 사용해서 수식으로 표현해도 됩니다.
아래 표에 있는 식은 외워두면 좋습니다.
- $(a-1)%b+1$ : 1, … , b를 반복해서 얻을 수 있음
- $(a-1)/b+1$ : 1 b개, 2 b개 …를 반복해서 얻을 수 있음
a | b | a%b | (a-1)%b+1 | (a-1)/b+1 |
---|---|---|---|---|
1 | 3 | 1 | 1 | 1 |
2 | 3 | 2 | 2 | 1 |
3 | 3 | 0 | 3 | 1 |
4 | 3 | 1 | 1 | 2 |
5 | 3 | 2 | 2 | 2 |
6 | 3 | 0 | 3 | 2 |
7 | 3 | 1 | 1 | 3 |
8 | 3 | 2 | 2 | 3 |
9 | 3 | 0 | 3 | 3 |
10 | 3 | 1 | 1 | 4 |
11 | 3 | 2 | 2 | 4 |
12 | 3 | 0 | 3 | 4 |
정답 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
//freopen("input.txt", "r", stdin);
ios_base::sync_with_stdio(0); cin.tie(0);
int tc = 0;
cin >> tc;
while (tc--) {
ll n, m;
cin >> n >> m;
n = (n - 1) % 10LL + 1; // 1. 공식에 따라 변형
ll result = n;
for (ll i = 0; i < m-1; i++) {
result *= n; // 2. 곱한다
result = (result - 1) % 10LL + 1; // 3. 다시 한 번 공식을 적용
}
cout << result << "\n";
}
return 0;
}
Success Notice: 수고하셨습니다.
Leave a comment