Pradyumn And Pseudo Random Numbers

2

4 votes
Implementation, Easy
Problem

Pradyumn recently studied a new topic called Random Numbers and Pseudo Random Numbers. He came across a fact that all the programming languages never creates perfectly random numbers. They follow a certain logic to create random numbers. That's why numbers generated are called Pseudo Random Numbers. Now, Pradyumn thought to make Pseudo Random Numbers himself. He created a following function

generateRandomNumbers(size) {
    range = 1000000007
    multiplierOne = 2017
    multiplierSecond = 2027
    lastNumber = 0
    secondLastNumber = 1
    maxNumberGeneratedTillNow = 0
    list[size] // list of generated numbers
    for(I = 1;I <= size; ++I) {
        newNumber = (lastNumber * multiplierOne + secondLastNumber * multiplierSecond + maxNumberGeneratedTillNow) % range + 1
        secondLastNumber = lastNumber
        lastNumber = newNumber 
        list.ADD(newNumber)
    }
return list
Pradyumn asked Anmol to test his logic. Anmol thought to check certain numbers that can be created by this number or not. Pradyumn is tired after creating the logic. Pradyumn needs your help to answer Anmol Queries.

INPUT CONSTRAINTS
1size106
1q105
1qi1000000007

INPUT FORMAT
Two space separated integers size and Q , where size denotes the size of randomly generated numbers and Q denotes number of queries.
Q number of lines describing the query value on each line given by Anmol.

OUTPUT FORMAT
If number can be created from given values and function, output "YES" else "NO" without quotes

Sample Input
1 2
2028
2018
Sample Output
YES
NO
Time Limit: 1
Memory Limit: 256
Source Limit:
Explanation

On generating random numbers according to above function(do it yourself). One number will be created which is 2028. As the Anmol asked for 2028. Answer will be "YES". And answer for 2018 will be "NO".

Editor Image

?