Berikut ini adalah pertanyaan dari kelvinho018527 pada mata pelajaran TI untuk jenjang Sekolah Menengah Pertama
-> Deskripsi
Jessie adalah seorang siswa di suatu sekolah. Sekolah tersebut melakukan penilaian dengan tugas-tugas tertentu. Tugas ke-n memiliki pembobotan Pn. Jessie memiliki rata-rata X, yaitu rata-rata harapannya. Diketahui skor tugas-tugas Jessie sampai tugas ke-(n-1), yang dinotasikan sebagai Sn. Tentukan skor minimal Jessie pada tugas ke-n (dalam bentuk bilangan bulat) agar rata-rata Jessie tidak kurang dari X. Jika tidak mungkin, keluarkan -1.
Format Masukan:
Baris pertama berisi nilai X dan n.
Baris kedua berisi pembobotan tugas ke-1 sampai tugas ke-(n-1).
Baris ketiga berisi nilai tugas ke-1 sampai tugas ke-(n-1).
Maka masukan akan berbentuk:
X n
P1 P2 P3 P4 .... P(n-1)
S1 S2 S3 S4 .... S(n-1)
Format Keluaran
Sebuah baris berisi bilangan bulat Y yang merupakan jawaban dari pertanyaan.
Bentuk keluaran:
Y
Sample Input/Output
-> Input
78 5
0.2 0.3 0.15 0.2
80 65 70 85
-> Output
100
Penjelasan:
78 <= (0.2 × 80 + 65 × 0.3 + 70 × 0.15 + 85 × 0.2 + (1-0.2-0.3-0.15-0.2) × y)
78 <= 63 + 0.15y
15 <= 0.15y
100 <= y
Maka nilai minimum Y = 100.
Catatan:
nilai Y tidak boleh lebih dari 100 atau kurang dari 0.
Batasan:
-> n <= 80
-> Dijamin P1+P2+....+Pn= 1
-> 0 <= S1, S2, S3, ...., Sn <= 100
Jawaban dan Penjelasan
Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.
Solusi:
Untuk menyelesaikan permasalahan ini, kita perlu menggunakan rumus rata-rata:
X = (S1 × P1 + S2 × P2 + S3 × P3 + ... + Sn-1 × Pn-1 + Sn × Pn) / (P1 + P2 + P3 + ... + Pn)
Kita juga tahu bahwa nilai minimal dari Sk (1 ≤ k ≤ n-1) adalah 0 dan nilai minimal dari Sn adalah Y (nilai yang ingin kita cari).
Maka rumus di atas dapat kita ubah menjadi:
X ≤ (S1 × P1 + S2 × P2 + S3 × P3 + ... + Sn-1 × Pn-1 + Y × Pn) / (P1 + P2 + P3 + ... + Pn)
X × (P1 + P2 + P3 + ... + Pn) ≤ (S1 × P1 + S2 × P2 + S3 × P3 + ... + Sn-1 × Pn-1 + Y × Pn)
(X × P1 + X × P2 + X × P3 + ... + X × Pn) - (S1 × P1 + S2 × P2 + S3 × P3 + ... + Sn-1 × Pn-1) ≤ Y × Pn
Dari sini, kita dapat mencari nilai minimal dari Y yang memenuhi persamaan di atas:
Y = ((X × P1 + X × P2 + X × P3 + ... + X × Pn) - (S1 × P1 + S2 × P2 + S3 × P3 + ... + Sn-1 × Pn-1)) / Pn
Jika hasil dari persamaan di atas lebih kecil dari atau sama dengan 100 dan lebih besar dari atau sama dengan 0, maka outputkan hasilnya. Jika tidak, outputkan -1.
Berikut adalah implementasi dari algoritma di atas:
x, n = map(int, input().split())
p = list(map(float, input().split()))
s = list(map(int, input().split()))
total_weight = sum(p)
s_sum = sum(s[:-1])
y = (x * total_weight - s_sum) / p[-1]
if y >= 0 and y <= 100:
print(int(round(y)))
else:
print(-1)
Penjelasan kode di atas:
Pertama, kita membaca masukan nilai X dan n.
Kemudian, kita membaca masukan pembobotan tugas ke-1 sampai ke-(n-1) dan nilai tugas ke-1 sampai ke-(n-1).
Setelah itu, kita menghitung jumlah total pembobotan dan jumlah nilai tugas-tugas sampai tugas ke-(n-1).
Selanjutnya, kita mencari nilai minimal dari tugas ke-n menggunakan rumus di atas.
Jika nilai yang ditemukan berada di antara 0 dan 100, kita outputkan nilainya (setelah dibulatkan ke bilangan bulat terdekat). Jika tidak, kita outputkan -1.
Demikianlah solusi untuk permasalahan ini.
Semoga dengan pertanyaan yang sudah terjawab oleh ss2677284 dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.
Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact
Last Update: Wed, 09 Aug 23