Misalkan saya mengingat tetap lebar bilangan bulat (yaitu mereka cocok dalam register lebar w ), seorang 1 , sebuah 2 , ... sebuah n sehingga jumlah mereka yang 1 + a 2 + ⋯ + a n = S juga cocok dalam register dengan lebar w .
Sepertinya saya bahwa kita selalu dapat mengubah angka ke sehingga setiap jumlah awalan S i = b 1 + b 2 + ⋯ + b saya juga cocok dalam register lebar w .
Pada dasarnya, motivasinya adalah untuk menghitung jumlah pada mesin register lebar tetap tanpa harus khawatir tentang bilangan bulat bilangan bulat pada setiap tahap menengah.
Apakah ada algoritma yang cepat (lebih disukai waktu linier) untuk menemukan permutasi seperti itu (dengan asumsi diberikan sebagai array input)? (atau katakan jika permutasi seperti itu tidak ada).
-2^(n-1)
hingga 2^(n-1)-1
. Tentu saja membutuhkan komplemen dua dan perilaku overflow yang terdefinisi dengan baik, tetapi dalam bahasa seperti C # itu harus bekerja.