Cara Membuat Angka dengan Jumlah Satu dan Dua

Aug 16 2020

Saya bertanya-tanya apakah ada cara untuk menghitung cara yang mungkin untuk menjumlahkan angka hanya menggunakan satu dan dua

Sebagai contoh:

Kami punya angka 10. Angka 10 bisa dijumlahkan dengan:

1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1  
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 2
2 + 2 + 2 + 2 + 2 
etc...

Terima kasih sebelumnya!

Jawaban

1 amit Aug 17 2020 at 03:22

Jika urutan elemen tidak menjadi masalah, seperti yang dijelaskan oleh komentar (yaitu 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 2identik dengan 2 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1), ini hanya memilih jumlah elemen dalam penjumlahan, yang dapat berkisar antara 5 sampai 10. Setelah jumlah elemen dipilih, Anda tahu persis berapa banyak dari mereka harus 1s dan berapa banyak dari mereka harus 2s: Untuk elemen x, ada 10-x 2s, dan sisanya 1s.

Karena ada 6 angka yang bisa dipilih, inilah banyaknya cara untuk membuat 10.

another_CS_guy Aug 17 2020 at 05:36

Daripada membahas rumus matematika yang rumit, saya akan merekomendasikan pendekatan DP.


    int arr[N+1]; // Represents no. of ways to produce a number at index 1
    // Like arr[5] is no. of ways to produce number 5
    
    for(int i=0;i<=N;i++) {
      arr[i] = 1; // As all 1s
    }
    
    for(int i=2;i<=N;i++) {
      // if we add 2 now, check for no. of ways i-2 can be made, 
      // add it to current arr[i] value.
      arr[i] += arr[i-2];
    }
    
    cout<< (arr[N]); // print

RahulBhobe Aug 17 2020 at 18:07

Jumlah cara membuat bilangan hanya dengan satuan = 1
Jumlah cara membuat bilangan menggunakan setidaknya satu dua = floor(n/2)
Total =1 + floor(n/2)

Lihat javascriptcuplikan kode di bawah ini:

let numWays = n => 1 + Math.floor(n/2);

for (let i=1; i<=20; i++)
    console.log("Number of ways to create " + i + " is: " + numWays(i));