본문 바로가기
Algorithm/Baekjoon For.Java

1354 : 무한 수열 2

by Jinny zinny 2023. 3. 20.
import java.util.*;
import java.util.stream.Stream;
import java.io.*;

public class Main {
	static int P;
	static int Q;
	static long X;
	static long Y;
	static HashMap<Long, Long> map = new HashMap<Long, Long>();

	public static long Solve(long i) {
		if (i <= 0) {
			return 1;
		} else {
			if (map.get(i) == null) {
				long p=(long) i/P-X;
				long q=(long) i/Q-Y;
				long number = Solve(p) + Solve(q);
				map.put(i, number);
				return number;
			} else {
				return map.get(i);
			}
		}
	}

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		long[] input = Stream.of(br.readLine().split(" ")).mapToLong(Long::parseLong).toArray();

		long N = input[0];
		P = (int) input[1];
		Q = (int) input[2];
		X = (int) input[3];
		Y = (int) input[4];

		map.put((long) 0, (long) 1);

		bw.write(String.valueOf(Solve(N)));
		bw.flush();
		bw.close();
	}
}
반응형

'Algorithm > Baekjoon For.Java' 카테고리의 다른 글

1676 : 팩토리얼 0의 갯수  (0) 2023.03.22
2292 : 벌집  (0) 2023.03.20
10816 : 숫자 카드 2  (0) 2023.03.17
1351 : 무한 수열  (0) 2023.03.16
5397 : 키로거  (0) 2023.03.13