Помощь - Поиск - Пользователи - Календарь
Полная версия: Квадландия
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
chad
Задача 1 Квадландия (50 баллов)
Имя входного файла: square.in
Имя выходного файла: square.out
Максимальное время работы на одном тесте: 1 секунда
Ограничение по памяти: 64 MB
Все дети Квадландии любят мороженое. И только если бы не взрослые, дети Квадландии целыми днями ели бы мороженое. Но, увы, эти взрослые каждый раз придумывают что-то новенькое, чтобы не дать детям вволю наесться холодным лакомством. На этот раз было решено, что порция мороженого будет продана только за такое число квадов (квад – национальная валюта Квадландии), которое является квадратом натурального числа.
У мальчика Вовы уже есть N квадов. Каждый день, если мальчик не ел мороженого, родители дают ему несколько квадов. В первый день своего послушания Вова получит 1 квад, во второй – 3 квада, … в K-й день – (2K-1) квада. Вова не хочет тратить часть своих денег на покупку мороженого. Если уж и покупать мороженое, то на все деньги! Помогите Вове определить, сколько дней ему нужно копить деньги.
Формат входных данных
В первой строке находится одно целое число N (1 ≤ N ≤ 109) – количество квадов, которые есть у Вовы.
Формат выходных данных
Выведите первой строкой целое число K – количество дней, по истечении которых мальчик сможет купить мороженое. Если ответов несколько, то выведите любой. В случае если Вова никогда не сможет насладиться вкусом мороженого, выведите «-1» (без кавычек).
Пример
square.in square.out
5 2
2 -1
8 0

Вроде бы я написал прогу,но в ней что-то ,по-моему,не так...Вот код-
program qwadland;

{$APPTYPE CONSOLE}

uses
SysUtils;

var a,c,z,n:longint;
x:word;
begin
assign(input,'square.in');reset(input);
assign(output,'square.out');rewrite(output);
readln(a);
repeat
randomize;
x:=random(5);
until n>=a;
n:=x*x+2*x+1;
c:=n-a;
if c<0 then writeln('-1') else
if (c+1) mod 2<>0 then writeln('-1')else
if (c+1)mod 2=0 then
begin
z:=(c+1)div 2;
end;
writeln(z);writeln('pri x($)=',x);
end.
compiler
1) возьми код в теги.
2) причём тут случайные числа?
chad
Нет,если моё решеине вам кажется неправильным,напишите пожалуйста альтернативное...
мисс_граффити
лично мне кажется неправильным нарушение вот этого:
М
2. Все тексты программ должны помещаться в теги [cоde=pas] ... [/cоde].


настоятельно рекомендую исправить в ближайшее время... если хочешь получить помощь
Гость
Код
program fragland;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var k,a,n:longint;
begin
assign(input,'square.in');reset(input);
assign(output,'square.out');rewrite(output);
k:=1;
readln(n);
a:=n+(2*k-1);
repeat k:=k+1
until sqrt(a)= trunc(sqrt(a));
if sqrt(a) = trunc(sqrt(a)) then
writeln(k);
end.

Вот по-другому,но где здесь ошибка?Программа не работает..
Гость
program qwadland;

{$APPTYPE CONSOLE}

uses
SysUtils;

var a,c,z,n:longint;
x:word;
begin
assign(input,'square.in');reset(input);
assign(output,'square.out');rewrite(output);
readln(a);
repeat
randomize;
x:=random(5);
until n>=a;
n:=x*x+2*x+1;
c:=n-a;
if c<0 then writeln('-1') else
if (c+1) mod 2<>0 then writeln('-1')else
if (c+1)mod 2=0 then
begin
z:=(c+1)div 2;
end;
writeln(z);writeln('pri x($)=',x);
end.
Michael_Rybak
Погугли общий вид пифагоровых троек (сумма 1 + 3 + .. + 2k-1 это полный квадрат).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.