728x90

 0. [c++] 백준


https://www.acmicpc.net/problem/1074


 1. 풀이


숫자를 살펴보니 규칙성이 존재하였다. 오른쪽으로 커지는 것은 1, 4, 16, 64.... 1을 기초로 4씩 증가하는 규칙이 존재하였다.

아래로는 2, 8, 32, 128... 2를 기초로 4배씩 증가하는 규칙이 유사하게 존재하였다.

이를 기반으로 한 코드를 설계하였다.



 2. 소스코드


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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<iostream>
 
using namespace std;
 
void calc(int N, int r, int c) {
    long long k;
    long long mul;
    long long ret = 0;
 
 
    while (r) {
        mul = 2;
        for (k = 1; k <= r;k*=2) {
            mul *= 4;
        }
        k /= 2;
        mul /= 4;
        ret += mul;
        r -= k;
    }
 
 
    while (c) {
        mul = 1;
        for (k = 1; k <= c; k *= 2) {
            mul *= 4;
        }
        k /= 2;
        mul /= 4;
        ret += mul;
        c -= k;
    }
 
 
    cout << ret;
}
 
int main() {
    int N, r, c;
    
    cin >> N >> r >> c;
 
    calc(N, r, c);
 
    return 0;
}
cs


 3. 참고




질문이나 지적 있으시면 댓글로 남겨주세요~

도움 되셨으면 하트 꾹!


+ Recent posts