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??

avatar Arifasli88
@Arifasli88

4 Kontribusi 0 Poin

Diperbarui 3 tahun yang lalu

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 &lt; (input.length()/4))&amp;&amp;(!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 &lt; (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 &amp;gt;1
	if ((a2-a1)&amp;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>

avatar ChronoJava
@ChronoJava

41 Kontribusi 23 Poin

Dipost 3 tahun yang lalu

Login untuk ikut Jawaban