C, PHP, VB, .NET

Дневникът на Филип Петров


* Двойното число

Публикувано на 10 септември 2009 в раздел Математика.

Нека X е естествено число (цяло и положително), което завършва с цифрата 2. Ако вземем последната цифра на X, премахнем я и я сложим в началото на числото, то ще получим ново число Y, което е два пъти по-голямо от X. Намерете числата X и Y...

П.П. За да не стават обърквания при "слагането на последната цифра в началото на числото", то ето един пример: ако X = abcd2, то Y = 2abcd.

 



13 коментара


  1. Е чакай, аз съм написал "ако X = abcd2, то Y = 2abcd.". Това не значи, че "X = abcd2". Това е просто пример, който да покаже операцията "преместване на 2 от края в началото на числото".

    Исках чрез него да не се получи объркване, а то взе, че предизвика такова :)

    Иначе като гледам си на прав път!

  2. ето така:
    X=abcd2
    Y=2X=2abcd
    => d=4
    X=abc42
    Y=2X=2abc4
    => c=8
    X=ab842
    Y=2X=2ab84
    => b=6
    X=a6842
    Y=2X=2a684
    => a=3, ама се получава противоречие!

  3. написах следната програма:
    LOCAL ln, ost, time
    time=SECONDS()
    ln="1"
    ost="0"
    DO WHILE EVALUATE("2"+LEFT(ln,LEN(ln)))#2*EVALUATE(ln)
    tmp=ln+ALLTRIM(STR(FLOOR(EVALUATE(ost+RIGHT(ln,1))/2)))
    ost=ALLTRIM(STR(EVALUATE(ost+RIGHT(ln,1))%2))
    ln=tmp
    ENDDO
    MESSAGEBOX(ln)
    която изкара следния отговор:
    http://img6.imageshack.us/img6/9049/91204366.jpg
    това не е верен отговор, просто е достигнат лимита на дългите числа, но ясно се вижда че от едно място натам цифрите започват да се повтарят, така че няма решение.

  4. Може би не става ясно, но идеята ми е, че щом числото започва с 2, значи 2но по-малкото започва с 1 => числото започва с 21 => по-малкото започва с 10 => числото започва с 210 и тн.

  5. Браво на Lesna Rabota - това е отговорът.

    Идеята е следната. X завършва с 2 => Y като двойно по-голямо завършва на 4. Да, но последното число на Y се явява предпоследно на X => X завършва на 42. От там, пак понеже Y е два пъти по-голямо от X, то предпоследното на Y трябва да е 8... Така се продължава докато не се стигне до отговора. Ако двойното число надхвърли 10 - взимаме "1 наум" и т.н.

  6. оправих си и моята програма:
    LOCAL ln, ost, time
    time=SECONDS()
    ln="10"
    ost="1"
    DO WHILE EVALUATE("2"+LEFT(ln,LEN(ln)-1))#2*EVALUATE(ln) OR RIGHT(ln,1)#"2"
    tmp=ln+ALLTRIM(STR(FLOOR(EVALUATE(ost+RIGHT(ln,1))/2)))
    ost=ALLTRIM(STR(EVALUATE(ost+RIGHT(ln,1))%2))
    ln=tmp
    ENDDO
    MESSAGEBOX("2*"+ln+"="+alltrim(STR(2*EVALUATE(ln))))

  7. нещо повече ако числото се повтори n пъти условието пак е вярно 2*105263157894736842105263157894736842=210526315789473684210526315789473684

Добави коментар

Адресът на електронната поща няма да се публикува


*