IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Помогите решить задачу. Индикатор
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской
Реальное имя: Влад

Репутация: -  0  +


Помогите решить задачу.

Задача Индикатор.

Лимит времени 2000/4000/4000/4000 мс. Лимит памяти 65000/65000/65000/65000 Кб.

Недавно Вася приобрёл калькулятор с жидкокристаллическим индикатором. Этот индикатор отображает N цифр с помощью N одинаковых элементов.

Отметим, что каждый элемент содержит семь полосок, каждая из которых может быть либо белой, либо чёрной. В частности при отображении цифры "1" чёрными являются две полоски.
Вася - очень любознательный мальчик, поэтому он хочет узнать, какое максимальное и минимальное N-значные числа могут быть отображены на индикаторе его нового калькулятора так, чтобы черными были ровно k полосок.
Напишите программу, которая найдёт ответ на Васин вопрос. Учитывайте при этом, что числа не могут содержать ведущие нули.

Входные данные:
два целых числа: N и k (1<=N<=100, 1<=k<=700).

Выходные данные:
В первой строке - минимальное число, во второй строке - максимальное число.
Если указанным образом не может быть представлено ни одно число, выходной файл должен содержать одну строку NO SOLUTION.

Пример 1.

на входе:
5 15

на выходе:
10117
97111

Пример 2.

на входе:
10 1

на выходе:
NO SOLUTION


Мой вариант решения (не работает):


Program New;
uses crt;
var number: array[1..200000000]of LongInt;
a: array[0..9]of Integer;
n, sum, k, i, c, g, j: Integer;
s: String;
z, l, d: Boolean;
p, save, copy: LongInt;
f: Text;
begin
clrscr;
assign(f, 'input.txt');
reset(f);
read(f, n, k);

a[0]:=6; a[1]:=2; a[2]:=5; a[3]:=5; a[4]:=4; a[5]:=5; a[6]:=6; a[7]:=3;
a[8]:=7; a[9]:=6;

if (n > k) or (k < n*2) then
write('NO SOLUTION')
else
begin
l:=false;
p:=1;
for i:=1 to n-1 do
p:=p*10;
copy:=p;
save:=0;
for i:=1 to n do
begin
save:=save+(copy*9);
copy:=copy div 10;
end;
str(p, s);
j:=0; l:=false; z:=false; d:=false;
repeat
sum:=0;
if d=true then
s:=s+'1'
else
begin
if l=true then
begin
l:=false;
z:=true;
p:=save;
end;
for i:=1 to n do
begin
val(s[i], g, c);
sum:=sum+a[g];
end;
if sum = k then
begin
if z<>true then
l:=true
else
d:=true;
j:=j+1;
number[j]:=p;
end;
if z=true then
p:=p-1
else
p:=p+1;
str(p, s);
end;
until length(s) > n;
writeln(number[1]);
write(number[2]);
end;

readln;
end.




Моя программа очень долго выполняется и выдаёт ошибки. Помогите пожалуйста разобраться!

Сообщение отредактировано: ForesTop -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Хорошее решение. И главное, самостоятельное =)


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
ForesTop   Помогите решить задачу. Индикатор   5.11.2010 16:10
Archon   Ты предлагаешь нам увлекательную игру "попроб…   5.11.2010 19:48
ForesTop   Сначала я забиваю в массив кол-во чёрных палок для…   5.11.2010 20:02
TarasBer   > Сначала я забиваю в массив кол-во чёрных пало…   5.11.2010 20:22
ForesTop   А как тогда, если не перебором???   5.11.2010 20:26
Archon   Используй аналитический алгоритм. Подумай, как бы …   5.11.2010 20:29
ForesTop   Используй аналитический алгоритм. Подумай, как бы…   5.11.2010 20:35
Archon   Тогда приведу свой вариант нахождения минимального…   5.11.2010 21:28
ForesTop   Вот попробовал написать для максимального числа, в…   5.11.2010 22:25
Archon   Попробуй входные данные n = 5, k = 11.   5.11.2010 22:51
ForesTop   А так??? var n, k, i: Integer; s: String; { Тек…   5.11.2010 22:57
Archon   n = 5, k = 13 :)   5.11.2010 23:02
ForesTop   Попробуй теперь, поправил в предыдущем коде, замен…   5.11.2010 23:08
Archon   Все равно неправильно. Ответ для n = 5, k = 13 дол…   5.11.2010 23:28
ForesTop   Тогда подскажите, где у меня ошибка?   5.11.2010 23:29
Archon   Ошибка в том, что твой алгоритм дает неправильный …   5.11.2010 23:42
ForesTop   Согласен, но я не прошу показать мне Ваше решение,…   5.11.2010 23:45
Archon   Я бы и рад так поступить, но не могу указать на не…   5.11.2010 23:56
ForesTop   Соглашусь и с этим, это не только выглядит, но и с…   6.11.2010 0:09
Archon   Я потому и просил спрашивать, если мой алгоритм не…   6.11.2010 0:18
ForesTop   Вот попробовал написать, но чего - то не получаетс…   6.11.2010 0:39
Archon   Ну снова, было бы неплохо пояснять, что именно ты …   6.11.2010 1:06
ForesTop   Попробовал получить максимальное число методом пер…   6.11.2010 1:20
ForesTop   Всем спасибо, вот решение методом перебора цифр дл…   6.11.2010 4:58
Archon   Хорошее решение. И главное, самостоятельное =)   6.11.2010 13:25


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 20:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name