|
||||||||||
DistanceTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1197 Accepted Submission(s): 430 Problem Description In number theory, a prime is a positive integer greater than 1 that has no positive divisors other than 1 and itself. The distance between two positive integers x and y, denoted by d(x, y), is defined as the minimum number of multiplications by a prime or divisions (without a remainder) by a prime one can perform to transform x into y. For example, d(15, 50) = 3, because 50 = 15 * 2 * 5 / 3, and you have to perform two multiplications (*2, *5) and one division (/3) to transform 15 into 50. For a set S of positive integers, which is initially empty, you are asked to implement the following types of operations on S. 1. I x: Insert x into S. If x is already in S, just ignore this operation. 2. D x: Delete x from S. If x is not in S, just ignore this operation. 3. Q x: Find out a minimum z such that there exists a y in S and d(x, y) = z. Input The input contains multiple test cases. The first line of each case contains an integer Q (1 <= Q <= 50000), indicating the number of operations. The following lines each contain a letter ¡®I¡¯, ¡®D¡¯ or ¡®Q¡¯, and an integer x (1 <= x <= 1000000). Q = 0 indicates the end of the input. The total number of operations does not exceed 300000. Output For each case, output ¡°Case #X:¡± first, where X is the case number, starting from 1. Then for each ¡®Q¡¯ operation, output the result in a line; if S is empty when a ¡®Q¡¯ operation is to perform, output -1 instead. Sample Input
Sample Output
Author SYSU Source | ||||||||||
|