Psevdotəsadüfi ədədlər generatoru
Donalд təbiəti sevir. Proqramçı olaraq, Donalд ağacların böyüməsini simulyasiya etmək və ya realistik üçölçülü landşaftlar yaratmaq üçün proqramlar yazır. Bunun üçün Donalдa yaxşı bir psevdotəsadüfi ədədlər generatoru lazımdır. O, işarəsiz 40 bitlik tam ədədlərin sonsuz ardıcıllığını yaratmaq üçün aşağıdakı metodu icad edir.
m := 1 << 40 // = 2^40 = 1 099 511 627 776 S(0) := 0x600DCAFE // = 1 611 516 670 S(n + 1) := (S(n) + (S(n) >> 20) + 12345) % m
Sonuncu sətirdə x >> 20 x-in 2^20
-yə bölünməsindən alınan tam hissəni, x % m isə x-in m-ə bölünməsindən alınan qalığı ifadə edir.
Psevdotəsadüfi ədədlər generatorunun həqiqətən yaxşı olub-olmadığını müəyyən etmək üçün Donalд ilk test olaraq bu ardıcıllıqla yaradılan cüt dəyərlərin sayını hesablamaq istəyir ki, bu da 50%-ə kifayət qədər yaxın olub-olmadığını yoxlasın. Sizin köməyiniz məmnuniyyətlə qarşılanacaq.
Giriş məlumatları
Bir tam ədəd n (0 ≤ n < 2^63
).
Çıxış məlumatları
S(0), S(1), ..., S(n - 1) ardıcıllığında cüt dəyərlərin sayına uyğun gələn bir tam ədədi bir sətirdə çıxarın.