1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

Chess.in

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

Наш партнер Genesis Hackspace
  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-цы, которая будет принимать число в строковом формате, щоб работать с большими числами без потерь точности.
     

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