6 x+ 9y+ 20z = A

Başlatan desman, 09 Şubat 2015, 20:25:35

desman

6x+9y+20z =A
bu denklem hangi negatif olmayan x,y,z değerleri için 50, 51, 52, 53, 54, bu 55 sonuçlarını verir?
Benim geliştirdiğim naive algoritma şöyle;
x y z
1 1 1
2 1 1
3 1 1
.....
.....
1 1 1
1 2 1
1 3 1

ama şunu yaparsam çözücem:
x y z
1 1 1
1 2 1
1 1 2

2 2 2 
2 1 2
2 2 1

3 1 1
1 3 1
1 1 3
3 2 1
....
....

C yada c++ nasıl yapabiliriz?
A freshman at YTU

hasankara

soruyu anlamadım tekrar sorabilir misin?

Karamel

hocam herhangi birisini 0 tutariz. kalan 2 sinede kafadan 2 deger verip sonuclardan birisini tutturmaya calisiriz. bunu basarabilirsek kalan 2 tanesi. birbirini onundeki katsayisi kadar toplayip cikararak tekrar ederler. bunu bir ornek ile aciklayalim.

2x + y = 51

x = 25
y = 1

x = 24
y = 2

x = 23
y = 4

.
.
.
.
.
.

bu boyle gider. sonra digerini sabit tutar ve baska sonuclar buluruz.

desman

@Karamel hocam haklısınız ama algoritma çalışıyorum ve kafamda kurduğum çözümü anlatamıyorum bilgisayara ben şunu yapmak istiyorum:
x y z   
1 1 1  
1 2 1
1 1 2 
2 2 1
2 1 2
2 2 2
(1 ve 2 li kombinasyonların tümü bu kadar şimdi 3 de oyuna dahil,kaldığım yerden devam)
3 1 1
3 2 1
3 1 2 
3 2 2
gibi ..

bunu deniyorum.
A freshman at YTU

mufitsozen

#include <stdlib.h>

int main()
{
    int x,y,z,A;

    for (x=0;x<55;x=x+6)
        for(y=0;y<55;y=y+9)
            for(z=0;z<55;z=z+20){
                A=x+y+z;
                if(A>= 50 && A<=55)
                    printf("\n x=%d y=%d z=%d A=%d", x,y,z,A);
            }

    printf("\n");


	return 0;
}


Program ciktisi:
x=0 y=54 z=0 A=54
x=6 y=9 z=40 A=55
x=6 y=27 z=20 A=53
x=6 y=45 z=0 A=51
x=12 y=0 z=40 A=52
x=12 y=18 z=20 A=50
x=18 y=36 z=0 A=54
x=24 y=9 z=20 A=53
x=24 y=27 z=0 A=51
x=30 y=0 z=20 A=50
x=36 y=18 z=0 A=54
x=42 y=9 z=0 A=51
x=54 y=0 z=0 A=54
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Karamel

Alıntı yapılan: mufitsozen - 09 Şubat 2015, 20:53:57
#include <stdlib.h>

int main()
{
    int x,y,z,A;

    for (x=0;x<55;x=x+6)
        for(y=0;y<55;y=y+9)
            for(z=0;z<55;z=z+20){
                A=x+y+z;
                if(A>= 50 && A<=55)
                    printf("\n x=%d y=%d z=%d A=%d", x,y,z,A);
            }

    printf("\n");


	return 0;
}


Program ciktisi:
x=0 y=54 z=0 A=54
x=6 y=9 z=40 A=55
x=6 y=27 z=20 A=53
x=6 y=45 z=0 A=51
x=12 y=0 z=40 A=52
x=12 y=18 z=20 A=50
x=18 y=36 z=0 A=54
x=24 y=9 z=20 A=53
x=24 y=27 z=0 A=51
x=30 y=0 z=20 A=50
x=36 y=18 z=0 A=54
x=42 y=9 z=0 A=51
x=54 y=0 z=0 A=54


yazilimci hocanin hali bir baska....  :P hocam bende butun permutasyonlari nasil deneriz diye dusunuyordum. megersem basit for donguleri ile halledebilirmisiz meseleyi...... ::)

mufitsozen

#6
Alıntı yapılan: Karamel - 09 Şubat 2015, 21:25:32
yazilimci hocanin hali bir baska....  :P hocam bende butun permutasyonlari nasil deneriz diye dusunuyordum. megersem basit for donguleri ile halledebilirmisiz meseleyi...... ::)

Einstein "Everything should be made as simple as possible, but not simpler."(Herşey olabildiğince basit olmalıdır, ama daha basit değil.) demis. (Bu Occamin usturasi prensibi diyede bilinir aslinda!) Bizde onu dinliyoruz, bisi biliyordur diye. ;)

Fakat duzeltmem gereken bir konu var ben yazilimci değilim. Yazilimi kullanmasini iyi bilen bir Telekom/Datakomcuyum.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

bluekid

Programda ufak tefek düzeltmeler lazım
başta
6 x+ 9y+ 20z = A
deniyor
program
A=x+y+z;
hesaplıyor


Karamel

Hocam for larin icersine bakarsaniz. sorun olmadigini goreceksiniz ki. hocamiz carpimi toplam olarak for dongusunun icersinde kullanmis. bence cok mantikli olmus...... ::)

bluekid

hesaplanan  çözümlerden biri
"x=6 y=27 z=20 A=53"

yerine koyalım
6* 6 + 9 * 27 + 20 *20 = ?

vitruvius

Program cikti olarak 6x, 9y ve 20z'yi veriyor. x, y, z'yi degil.

X'i bulmak icin degeri 6'ya, y'yi bulmak icin degeri 9'a, z'yi bulmak icin cikti degerini 20'ye bolmek lazim.

Guzel tespit. Ufak bir duzeltme ile hallolur.