Görev
Bir mod-katlamasını , f (x) = x% a % 1 % a % 2 …% a k formunun bir fonksiyonu olarak tanımlayın , burada a i pozitif tamsayılar ve k ≥ 0'dır . (Burada % , sol ilişkisel modulo operatörüdür.)
Y 0 ,…, y n − 1 n tamsayılarının bir listesi verildiğinde , her y i = f (i) olacak şekilde bir mod katlama f olup olmadığını belirleyin .
İşleviniz / programınız için iki Y ve N çıkışını seçebilir ve düzeltebilirsiniz . Böyle bir f varsa, her zaman tam olarak Y döndürmeli / yazdırmalısınız ; değilse, her zaman tam olarak N döndürmeli / yazdırmalısınız . (Bunlar olabilir true/ falseveya 1/ 0veya false/ truevs.) Cevabınız bu bahsedin.
Bayt cinsinden en kısa gönderim kazanır.
Misal
F (x) = x% 7% 3'ü tanımlayın 3 . Değerleri başlar:
| x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ...
| f(x) | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 0 | 1 | 2 | ...
Bu nedenle, 0 1 2 0 1 2 0 0 1 2çözümümüze girdi olarak verildiğinde , bu f dizisini oluşturduğu için Y'yi basardık. Bununla birlikte, girdi olarak verildiğinde , hiçbir f bu diziyi üretmediği için N yazdıracağız .0 1 0 1 2
Test senaryoları
Çıktı Y olduğunda verilen formüller sadece referans içindir; onları hiçbir zaman yazdırmamalısınız.
0 1 2 3 4 5 Y (x)
1 N
0 0 0 Y (x%1)
0 1 2 0 1 2 0 0 1 2 Y (x%7%3)
0 0 1 N
0 1 2 3 4 5 6 0 0 1 2 Y (x%8%7)
0 1 2 0 1 2 0 1 2 3 N
0 2 1 0 2 1 0 2 1 N
0 1 0 0 0 1 0 0 0 0 1 Y (x%9%4%3%2)