pengantar
Saya ingin membangun tangga. Untuk ini, saya telah memungut dari tempat barang rongsokan dua papan panjang dengan lubang di dalamnya, dan saya ingin menempatkan langkah-langkah ke dalam lubang ini. Namun, lubang tidak ditempatkan secara merata, sehingga langkah-langkahnya akan sedikit miring, dan saya merasa sulit untuk memperkirakan jumlah batang yang saya butuhkan untuk mereka. Tugas Anda adalah melakukan perhitungan untuk saya.
Memasukkan
Input Anda adalah dua vektor bit, diberikan sebagai array bilangan bulat, yang mewakili dua papan. A 0
mewakili segmen satu aud ( unit jarak sewenang-wenang ) tanpa lubang, dan 1
mewakili segmen dari satu aud dengan lubang tunggal. Array mungkin memiliki panjang yang berbeda dan mengandung jumlah 1
s yang berbeda , tetapi array tersebut tidak akan kosong.
Saya akan membangun tangga saya sebagai berikut. Pertama, saya menempatkan kedua papan tepat satu audit terpisah, dan sejajarkan ujung kiri mereka. Untuk setiap indeks i
, saya mengukur jarak antara i
lubang ke-1 papan pertama dengan i
lubang ke-2 untuk papan kedua, memotong sepotong batang, dan memasangnya di antara dua lubang. Saya berhenti begitu saya kehabisan lubang di salah satu papan.
Keluaran
Output Anda adalah jumlah total batang yang saya perlukan untuk langkah-langkahnya, diukur dalam audit. Outputnya harus benar setidaknya enam digit signifikan.
Contoh
Pertimbangkan input [0,1,1,0,1,1,1,1,0,0]
dan [1,0,0,1,1,1,0,0,1]
. Tangga yang dihasilkan terlihat seperti ini:
Panjang total batang di tangga ini adalah 7.06449510224598
aud.
Aturan
Anda dapat menulis fungsi atau program lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji Kasus
[0] [0] -> 0.0
[0] [1,0] -> 0.0
[1,0,0] [1,1,1,1,1] -> 1.0
[0,1,0,1] [1,0,0,1] -> 2.414213562373095
[0,1,1,0,1,1,1,1,0,0] [1,0,0,1,1,1,0,0,1] -> 7.06449510224598
[1,1,1,1,1] [0,0,1,1,0,1,0,0,1] -> 12.733433128760744
[0,0,0,1,0,1,1,0,0,0,1,1,1,0,0,1,0,1,1,0,0,0,1,0] [0,0,1,1,0,1,1,1,0,0,0,0,0,1,1,0,1,1,0,0,0,1] -> 20.38177416534678