Biz zaten bir katlama numarasını tanımladıktan burada .
Ama şimdi bir Süper Katlama Numarası tanımlayacağız. Süper Katlama numarası, yeterince katlandığında eninde iki güçten daha azına ulaşacak bir sayıdır. Katlama yöntemi katlama sayısı sorusundan biraz farklıdır.
Katlama algoritması aşağıdaki gibi gider:
İkili temsili alın
örneğin 5882
1011011111010
Üç bölüme döktüm. İlk yarı, son yarı ve orta basamak (tek sayıda basamak varsa)
101101 1 111010
Orta basamak sıfırsa bu sayı katlanamaz
İkinci yarıyı tersine çevirin ve ilk yarıda üst üste bindik
010111 101101
Rakamları yerine ekleyin
111212
- Sonuçta herhangi bir 2s varsa, sayı katlanamaz, aksi takdirde yeni sayı katlama algoritmasının sonucudur.
Bir sayı, sürekli bir dizgiye katlanabiliyorsa Süper Katlama numarasıdır. (Tüm Katlanır numaralar da Süper Katlanır Numaralardır)
Göreviniz, bir sayı alan ve sayı bir Süper Katlama numarası ise doğruluk değeri veren bir kod yazmaktır, aksi takdirde yanlıştır. Programınızın boyutuna göre puanlandırılacaksınız.
Örnekler
5200
İkili biçime dönüştür:
1010001010000
İkiye bölmek:
101000 1 010000
Orta birdir, bu yüzden devam ediyoruz.
000010
101000
Ekledi:
101010
İkili yok, bu yüzden ikiye bölünmeye devam ediyoruz:
101 010
Kat:
010
101
111
Sonuç 111
(ondalık olarak 7'dir) bu yüzden bu bir Süper Katlama Numarasıdır.
Test Durumları
İlk 100 Süper Katlanır Numara:
[1, 2, 3, 6, 7, 8, 10, 12, 15, 20, 22, 28, 31, 34, 38, 42, 48, 52, 56, 63, 74, 78, 90, 104, 108, 120, 127, 128, 130, 132, 142, 150, 160, 170, 178, 192, 204, 212, 232, 240, 255, 272, 274, 276, 286, 310, 336, 346, 370, 400, 412, 436, 472, 496, 511, 516, 518, 524, 542, 558, 580, 598, 614, 640, 642, 648, 666, 682, 704, 722, 738, 772, 796, 812, 852, 868, 896, 920, 936, 976, 992, 1023, 1060, 1062, 1068, 1086, 1134, 1188, 1206, 1254, 1312, 1314, 1320, 1338, 1386, 1440, 1458, 1506, 1572, 1596]
3
tekrar test senaryolarına nasıl girildi? Nasıl katlanabileceğini göremiyorum, çünkü ayrılıyor1 1
, hemen a2
. Yoksa sıfır kez katlamanın da önemli olduğunu mu söylüyorsunuz?