[第一問]伯俊/1074:Z
1074号Zは問題の形状から分割征服を用いることを提示し,公式化しようとしたがかえって時間を浪費した.
フィールドが常に四象限で増殖していると思っている場合は、ゲームボードを減らして対応する値を増やすだけで、簡単に解けます.
フィールドが常に四象限で増殖していると思っている場合は、ゲームボードを減らして対応する値を増やすだけで、簡単に解けます.
# include <iostream>
# include <math.h>
using namespace std;
int main() {
int N , r , c;
cin >> N >> r >> c;
int bound = 0;
int cnt = 0;
while (N >= 1) {
if (r > pow(2, N - 1) - 1 && c > pow(2, N - 1) - 1)
{
bound = 3;
r -= pow(2, N - 1) ;
c -= pow(2, N - 1) ;
}
else if (r > pow(2, N - 1) - 1 && c <= pow(2, N - 1) - 1)
{
bound = 2;
r -= pow(2, N - 1) ;
}
else if (r <= pow(2, N - 1) - 1 && c > pow(2, N - 1) - 1)
{
bound = 1;
c -= pow(2, N - 1) ;
}
else if (r <= pow(2, N - 1) - 1 && c <= pow(2, N - 1) - 1) bound = 0;
int q = bound * pow(4, N - 1);
cnt += bound * pow(4, N - 1);
N -= 1;
}
cout << cnt;
return 0;
}
また,このように解くと,境界を再設定しなければならないことに注意する.問題が大きくなりました.r,cも交換します.Reference
この問題について([第一問]伯俊/1074:Z), 我々は、より多くの情報をここで見つけました https://velog.io/@plackyou123/백준-1074-Zテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol