Chess.in

Тема в разделе "Delphi - FAQ", создана пользователем KoKoS, 1 янв 2008.

  1. KoKoS

    KoKoS Гость

    Нужно найти максимальное количество слонов, которых можно разместить на шахматной доске размерности NXN так, что они не угрожали друг другу?
    Формат входных данных:
    Во входном файле chess.in содержится единственное целое число N(0<N<10^50) – размеры шахматной доски.
    Формат выходных данных:
    В исходный файл chess.out вывести одно число – максимальное количество слонов.
    Chess.in:3
    Chess.out:4
    Хотя бы подскажыте мне идею задачи...
    С НОВЫМ ГОДОМ!
     
  2. Azrael

    Azrael Гость

    Для: KoKoS
    похоже, что по формуле 2(N-1), типа для 3x3:
    xxx
    000
    0x0
    для 4х4:
    xxxx
    0000
    0000
    0xx0
    для 5х5:
    xxxxx
    00000
    00000
    00000
    0xxx0
     
  3. KoKoS

    KoKoS Гость

    Для: Azrael
    А реализовать можешь?
    А то я пробую ничего не выходит....
     
  4. Azrael

    Azrael Гость

    Для: KoKoS
    Создаешь новое приложение, удаляешь юнит, в коде самого проекта пишешь:
    Код (Text):
    program chess;
    uses SysUtils;
    var inpF, outpF: TextFile;
    stNum: String;
    begin
    if FileExists('chess.in') then
    begin
    try
    AssignFile(inpF, 'chess.in');
    AssignFile(outpF, 'chess.out');
    Reset(inpF);
    Rewrite(outpF);
    Readln(inpF, stNum);
    Writeln(outpF, IntToStr(2*(StrToInt(stNum)-1)));
    finally
    CloseFile(inpF);
    CloseFile(outpF);
    end;
    end;
    end.
    сохраняешь как chess.dpr, в каталог складываешь chess.in, содержащий N.
    Должно работать, я вот только не уверен насчет РЕАЛЬНО больших N... давненько в делфе не работал.
     
  5. KoKoS

    KoKoS Гость

    Для: Azrael
    ОНА везде дает 1.
     
  6. Azrael

    Azrael Гость

    Для: KoKoS
    не знаю, как Вы такого добились. В chess.out у меня нормально складывает чиселки...
    А с большими числами, где кол-во разрядов больше 10, нужно, наверное, запрограммировать последовательность действий при вычитании -1 и умножения на 2 столбиком.

    Попробую прикрепить проект, только на вири проверь :)
     

    Вложения:

    • chessinout.zip
      Размер файла:
      24,6 КБ
      Просмотров:
      19
  7. KoKoS

    KoKoS Гость

    Большое спосибо вам.
     
  8. Azrael

    Azrael Гость

    Для: KoKoS
    Пожалуйста, можешь даже "+" тыкнуть ;)
    А вообще код не совсем подходит под задачу: он не "схватит" N~10^50, т.е. 50-ти разрядное 10-тичное число... Тут, возможно, стОит написать функции умножения на 2 и вычитания 1-цы, которая будет принимать число в строковом формате, щоб работать с большими числами без потерь точности.
     

Поделиться этой страницей