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 n
bulat integer positif m
sehingga m % 7
sama 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)<<2
dengan skor 6.4. Saya pikir ini akan sulit ditemukan sehingga disediakan ekspresi sendiri untuk memulai.
table lookups
Ungkapan menarik saya kira ...