Daftar bilangan bulat yang diberikan {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4} . Bagi mereka yang tertarik angka-angka ini digunakan dalam perhitungan hari kerja.
Hari Kerja = (m[n] + d + y + y>>2 + y/400 - y/100) % 7;, di mana m[n]- ekspresi yang saya cari, d- hari dalam sebulan, y-year - (month <= 2) .
Bangun ekspresi yang terdiri dari operator aritmatika, logika, dan bitwise, yang akan menghasilkan bilangan nbulat integer positif msehingga m % 7sama dengan angka ke-n dalam daftar.
Cabang, operator ternary, pencarian tabel dan pointer tidak diperbolehkan.
Nilai:
1 - untuk | & ^ ~ >> <<operator
1.1 - untuk + - < > <= >= == != ! && ||operator
1.2 - untuk *operator
1.4 - untuk / %operator
Jawab dengan kemenangan skor terendah.
Secara pribadi saya telah menemukan:
(41*n)>>4+((n+61)>>4)<<2dengan skor 6.4. Saya pikir ini akan sulit ditemukan sehingga disediakan ekspresi sendiri untuk memulai.
table lookupsUngkapan menarik saya kira ...