BJ1074 Z
10767 ワード
https://www.acmicpc.net/problem/1074
問題は解決しにくいように見えるが,再帰関数実装を用いることで,想像以上に簡単なコードで解決できる.
R行C列を入力すると、最大Zのどの部分を検索して加算します.
一歩一歩小さなZに下がって、この過程を繰り返すだけでいいです.
問題は解決しにくいように見えるが,再帰関数実装を用いることで,想像以上に簡単なコードで解決できる.
R行C列を入力すると、最大Zのどの部分を検索して加算します.
一歩一歩小さなZに下がって、この過程を繰り返すだけでいいです.
package day0215;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Z {
static BufferedReader br;
static BufferedWriter bw;
static StringTokenizer st;
static int find(int level, int x, int y, int out) {
if (level == 0)
return out;
int N = (int) Math.pow(2, level);
if (x >= N / 2) {
out += N * N / 2;
x -= N / 2;
}
if (y >= N / 2) {
out += N * N / 4;
y -= N / 2;
}
return find(level - 1, x, y, out);
}
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N, R, C; // 행과 열을 담을 예정.
st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
R = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
System.out.println(find(N, R, C, 0));
}
}
Reference
この問題について(BJ1074 Z), 我々は、より多くの情報をここで見つけました https://velog.io/@mraz0210/BJ1074-Zテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol