Ini mainan baru saya yang benar-benar mengasah otak. Sejauh ini, saya baru menyelesaikan 3 problem – problem 1,2, dan 6. Inti dari mainan online yang beralamat di projecteuler.net ini adalah menyelesaikan problem matematis yang penyelesaiannya jauh lebih mudah kalau dilakukan dengan membuat barisan kode-kode program. Untuk memulainya cukup dengan registrasi sejenak dan sebaiknya jangan melanjutkan baca artikel ini dulu kalau belum mencoba problem 1,2, dan 6.
Problem 1:
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
Soal mudah, dikerjakan pake kertas pun bisa pakai yang namanya deret aritmetika. Tapi tentu saja nggak afdol kalau ngerjainnya nggak pakai ngoding.
#include <stdio.h>
int main(){
int i,jumlah = 0;
while (i != 1000)
{
if ((i%3 ==0) || (i%5 ==0))
{jumlah += i;i++;}
else
{i++;};
}
printf("%d",jumlah);
return 0;
}
Kode sederhana C ini kalau dikompilasi dan dijalankan akan mengeluarkan hasil yang diinginkan, Problem 1 solved.
Problem 2:
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
Find the sum of all the even-valued terms in the sequence which do not exceed four million.
Sekali lagi problem trivial, tapi kalau dikerjain di kertas bisa mabok ini, jadi cukup dikerjakan dengan beberapa baris kode C saja. deretan kode yang saya buat adalah seperti ini
#include <stdio.h>
int main()
{
int fib1 = 1; //nilai awal deret fibonacci
int fib2 = 2;
int fib; //untuk diperiksa genap tidaknya
int jumlahgenap = 2; //jumlah bilangan genapnya
while (fib <= 4000000)
{
fib = fib1 + fib2;
if (fib %2 == 0)
{jumlahgenap+=fib;}
fib1 = fib2;
fib2 = fib;
}
printf("%d",jumlahgenap);
return 0;
}
Mudah, tapi pertanyaannya, ada yang bisa mengerjakan ini dengan cara rekursif?
Problem 6:
The sum of the squares of the first ten natural numbers is,
12 + 22 + … + 102 = 385
The square of the sum of the first ten natural numbers is,
(1 + 2 + … + 10)2 = 552 = 3025
Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 – 385 = 2640.
Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.
Ini juga mudah, bagaimana kalau pembaca saja yang menuliskan kodenya di sini? Atau ini nggak pakai kode juga bisa, silakan pakai pensil dan kertas.
Selamat bermain
Wah…. saya hampir lupa semua reserved words dan juga fungsi2nya Bahasa C…. hampir semua juga lupa. Tapi dulu sekitar tahun 1992, pernah juga bikin program Statistik, tapi pakai Turbo Pascal zaman jadul, persisnya udah lupa lagi bikin program apa, tetapi pakai rekursi juga pakai algoritma “nested net” atau sarang dalam sarang, pokoknya angkanya besar sekali sehingga dia looping terus, eh nggak tahunya malah hang. Mana dulu prosesornya masih pakai prosesor Intel 486DX2 jadul banget…..
Yey! Problem 5 done without coding
[Pak Yari]
Nggak harus dibikin di C kok, intinya sih menjawab pertanyaan yang dikasih di situ..
Saya juga menangi kok 486, cuma ndak sempet belajar programming, sedikit BASICA paling
puyeng mas…. klo vb sedikit bisa. apa nggak ada ya.. game buat ngasah kemampuan php dan html kita? klo yang rumit-tumit mending nyewa programmer. kan banyak beredar di internet.
itu diselesaiin pake PHP juga bisa -_-
ampun kk ^:)^
Problem 4 – Find the largest palindrome made from the product of two 3-digit numbers.
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 99.
Find the largest palindrome made from the product of two 3-digit numbers.
Public Sub PalindromTerbesar3angka() Dim a As Integer = 999 Dim b As Integer = 999 Dim c As Long Dim d As String = Nothing Dim hasil(3) As Long 'array, elemen 0 = hasil kali, 'elemen 1 & 2 = yang dikalikan hasil(0) = 0 'algoritma brute force For a = 999 To 100 Step -1 For b = 999 To 100 Step -1 c = a * b d = Str(c) d = Trim(d) If d.Equals(StrReverse(d)) Then 'palindrom ditemukan If c > hasil(0) Then hasil(0) = c hasil(1) = a hasil(2) = b End If Exit For End If Next b Next a 'tampilkan hasilnya MessageBox.Show("Palindrom terbesar : " & hasil(0) _ & vbCrLf & "Dari perkalian : " & hasil(1) & " x " & hasil(2), _ "Palindrom ditemukan", MessageBoxButtons.OK, _ MessageBoxIcon.Information) End Sub(Visual Basic 2008 – kalau identasi jadi kacau yasudahlah)
Udah beres berapa problem Ryan? baru 5 problem saya.. T_T
yang problem 4 belum saya sentuh..
baru 1 itu
ampuuun kk ^:)^
sekarang sudah 6 sama problem 4 itu..
hohoho..
ngeri keli kk..
sembahduluawa ^:)^
Lebih ngeri situ lah
^:)^
Ampun kk!!!!
Mesti belajar bahasa lagi, nih… ^^
Ada batas waktu setelah kita baca problemnya ga gan? Jadi kalo kelamaan baca bisa kena TLE gitu.
gak ada..
terserah waktunya
coba ah..
kok solusinya gak ditulis di blog yg ini aja wan?