Postingan lainnya
Program menemukan angka yang hilang
Setiap baris berisi angka berurutan dari kecil ke besar. Angka minimal adalah 1, dan angka maksimal adalah 10 pangkat 6. Tidak ada pemisah antara angka dalam urutan tersebut. Panjang minimal satu baris soal adalah 3 angka, maksimal 1000 angka. Angka yang hilang tidak berada di awal atau akhir, melainkan berada di antara awal dan akhir. Program dibuat untuk menemukan angka yang hilang.
contoh
Input Output
23242526272830 29
101102103104105106107108109111112113 110
12346789 5
79101112 8
7891012 11
9799100101102 98
100001100002100003100004100006 100005
Gimana ya saya butuh clue mengerjakannya??
1 Jawaban:
<div>Ini angka yang hilang pasti cuma 1 kan dan selisih antar bilangan juga 1?<br>Maaf, saya bikin pake java karena gak paham golang. Kodenya seperti ini :</div><pre>String input = "12346789"; //Inputnya int output = 0; //Outputnya int panjang_angka = 0; boolean stat = false; int hasilKali;
// Hal pertama adalah mencari panjang angkanya, apakah 1 digit, 2 digit, dst // Batasannya dalam 1 input minimal harus ada 4 angka, // misal dalam contoh input di atas angka maksimal adalah 2 digit (karena ada 8 karakter). // Kalau misal 3 digit, 467 - 321 = ? , 89 - 467 = ?, jadi gak jelas nanti programnya while ((panjang_angka < (input.length()/4))&&(!stat)) { panjang_angka++; int a1 = Integer.parseInt(input.substring(0,panjang_angka)); //ambil angka pertama int a2 = Integer.parseInt(input.substring(panjang_angka,panjang_angka2)); //angka kedua int a3 = Integer.parseInt(input.substring(panjang_angka2,panjang_angka3)); // dst... int a4 = Integer.parseInt(input.substring(panjang_angka3,panjang_angka*4)); hasilKali = a2 - a1; hasilKali = hasilKali * (a3 - a2); hasilKali = hasilKali * (a4 - a3);
// Di cek, panjang angkanya sudah ketemu belum?
// Kalau ketemu, otomatis hasil kalinya adalah 2 atau 1
if ((hasilKali==1)||(hasilKali==2)) {
stat = true;
}
} System.out.println(panjang_angka);
// kalau stat = true, berarti ketemu panjang angkanya if (stat) { int deret = input.length()/panjang_angka; System.out.println(deret); for (int i = 0; i < (deret-1); i++) { int a1 = Integer.parseInt(input.substring(ipanjang_angka,panjang_angka(i+1))); int a2 = Integer.parseInt(input.substring((i+1)panjang_angka,panjang_angka(i+2)));
//Kalau angka hilang pasti selisih angkanya 2 atau &gt;1
if ((a2-a1)&gt;1){
output = a1+1;
}
}
} System.out.println(output);</pre><div>Saya kira kodenya terlalu panjang dan bertele-tele, tapi mudah-mudahan bisa dipahami. Intinya adalah cari panjang angkanya dulu, berapa digit, kalau sudah ketemu tinggal dicari yang selisihnya 2.<br><br>untuk input 101102103104105106107108109111112113, hasil running programnya :<br>panjang_angka = 3<br>deret atau jumlah angkanya = 12<br>output atau angka yang hilang = 110<br><br>Kunjungi juga <a href="https://warkop-it.000webhostapp.com">https://warkop-it.000webhostapp.com</a></div>