Chess.in

  • Автор темы KoKoS
  • Дата начала
K

KoKoS

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

Azrael

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

KoKoS

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

Azrael

#4
Для: KoKoS
Создаешь новое приложение, удаляешь юнит, в коде самого проекта пишешь:
Код:
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... давненько в делфе не работал.
 
A

Azrael

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

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

Вложения

A

Azrael

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