Soru ?
Kral askerlerinden 1000 tanesinin yolsuzluk yaptığını öğrenir ve onları kılıca dizmeye karar verir. İçlerinden bir tanesi krala “Kralım! Hepimizi öldüreceksiniz ama benim bir fikrim var. Bir halka oluşturalım ve birimiz kılıcı alıp sağındaki askeri öldürsün ve kılıcı sağındaki sağ askere versin. O şekilde 1 kişi kalıncaya kadar devam edelim. Son kalan askeri de bağışlayın.” diyerek bir teklifte bulunur. Her askerin cezasını arkadaşı vereceği için bu fikir kralın aklına yatar. Bu durumda ilk kılıcı alan askere 1 numara dersek kaç numaralı askerin hayatta kalacağını hesaplayan C/C++ programını yazınız.
Cevap
for(int kes,ks=2,kesil=2;ks<=1024;kesil=ks+1,ks*=2)
{
for(kes=1;kesil<=1000; kes+=ks,kesil+=ks)
printf( “%d.Adam %d. adami keser\n”,kes,kesil);
printf(”%d Sag Kaldi\n”,kes-ks);
}
Hüseyin Bora ABACI
Sorunun Sorulduğu yer
0 Yanıt, “Uyanık Asker (Kısa Kod)”