Melyik gyerek vette ki a zsákból a legtöbb diót?

Figyelt kérdés
Egy zsák dióból először Peti, majd Jóska, utána Pista, végül Sanyi vesz ki annyi diót, amennyi a mindenkori kivétel előtt a zsákban lévő diók számának számjegyösszege. Miután a négy gyerek háromszor egymás után vesz ki a fenti sorrendben diókat a zsákból, a zsákban nem marad dió.
2011. jan. 24. 05:58
1 2
 11/14 anonim ***** válasza:

Diótörő fejtörő. :-))


Először is lássuk, mi történik, ha egy számból kivonjuk a számjegyeinek összegét.

Legyen

N = 100a + 10b + c

S = a + b + c

A számjegyek összegét - (a+b+c) - kivonva

N1 = N - S = 99a + 9b = 9(11a + b)

N1 = 9(11a + b)

Ez osztható 9-cel, ez pedig csak akkor lehetséges, ha a számjegyeinek összege 9.


Mi történik a diókkal?

Négyen vesznek ki a zsákból,

az első menetben

Peti a + b + c

Jóska 9

Pista 9

Sanyi 9

darabot.

Ekkor N1 mennyiségű dió van a zsákban

A következő menetekben mindenki 9 darabot vesz ki,

összesen 3*4*9 = 108 darabot

Hozzávéve az első menetben kivett 3*9 diót,

összesen 108 + 3*9 = 135 = 15*9

diót vettek ki, ezzel kiürült a zsák.

Innen adódik, hogy a diók száma nem lehet kétjegyű.


Vagyis az első menet után az

N1 = 9(11a + b) = 135

egyenlet írja le az állapotot.

Egyszerűsítve

11a + b = 15

a = (15 - b)/11

A zárójeles mennyiség csak akkor osztható 11-el, ha

b = 4

ekkor viszont

a = 1

Tehát a diók száma

N = 140 + c

=========

ahol 0 ≤ c ≤ 9


Így ha

c = 0

S = 5

Peti kapja legkevesebbet

ha

c = 4

S = 9

mindenki ugyanannyit kap

ha

c > 4

S > 9

Peti kapja a legtöbbet.


DeeDee

***********

2011. jan. 24. 20:19
Hasznos számodra ez a válasz?
 12/14 anonim válasza:
miért nem lehetne? a feladvány nem írja, hogy hány számjegyű a diók száma...és a helyes megoldás pedig csak a 119-től 110-ig terjedő egész számok..számolj utána!
2011. jan. 24. 20:21
Hasznos számodra ez a válasz?
 13/14 anonim válasza:

Itt a kód hozzá...lefuttatod és engem igazol :P


using System;

namespace ConsoleApplication1

{



class Program



{



static void Main(string[] args)



{



try



{



(new Program()).Entrance();



}



catch (Exception e)



{



Console.WriteLine(e.Message);



}



}



protected int[] childs;



protected int childCount = 4;



public void Entrance()



{



int start = 0;



bool result;



do



{



childs = new int[childCount];



result = Test(start);



start++;



}



while (!result);



Console.WriteLine("Original: {0}", --start);



for (var c = 0; c < childCount; c++)



{



Console.WriteLine("Child: {0} with {1}", c, childs[c]);



}



}



public bool Test(int start)



{



int num = start;



for (int x = 0; x < 3; x++)



{



for (int y = 0; y < childCount; y++)



{



int sum = GetSum(num);



childs[y] += sum;



num -= sum;



if (num < 1 && (x < 2 || y < childCount -1) )



{



return false;



}



}



}



if (num != 0)



{



return false;



}



return true;



}



public int GetSum(int num)



{



string asString = num.ToString();



int sum = 0;



foreach (char i in asString)



{



int n;



Int32.TryParse(i.ToString(), out n);



sum += n;



}



return sum;



}



}

}

2011. jan. 24. 20:24
Hasznos számodra ez a válasz?
 14/14 anonim ***** válasza:

Jogos a két pont a hármas asztalnak!

A gondolatmenetem jó, csak én 4 fordulóval számoltam a 3 helyett, amivel a te eredményed jön ki.

Csak mellékesen, egy program nem bizonyít semmit, az algoritmus érdekes, ami alapján megírtad. :-)


DeeDee

*******

2011. jan. 24. 21:36
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!