Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 4
1

Задача Монетки

24.12.2012, 19:09. Показов 4197. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Монетки
В волшебной стране используются монетки достоинством А1, А2, …, Ам. Волшебный человек пришел в магазин и обнаружил, что у него есть ровно по две монетки каждого достоинства. Ему нужно заплатить сумму N. Напишите программу, определяющую, сможет ли он расплатиться без сдачи.
Формат входных данных.
Во входном файле записано сначала число N (1 ≤ N ≤ 109), затем – число М (1 ≤ М ≤ 15) и далее М попарно различных чисел А1, А2, …, Ам (1 ≤ Аi ≤ 109).
Формат выходных данных.
В выходной файл выведите сначала К – количество монет, которое придется отдать Волшебному человечку, если он сможет заплатить указанную сумму без сдачи. Далее выведите К чисел, задающих достоинства монет. Если решений несколько, выведите вариант, в котором Волшебный человечек отдаст наименьшее возможное количество монет. Если таких вариантов несколько, выведите любой из них. Если без сдачи не обойтись, то выведите одно число 0. если же у Волшебного человечка не хватит денег, чтобы заплатить указанную сумму, выведите одно число -1(минус один).
Примеры:
B.in B.out
5 2 3
1 2 2 2 1
-----------
7 2 -1
1 2
-----------
5 2 0
3 4

Добавлено через 21 час 35 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var input,output:text; n,i,j,g,nm,ans,t:integer;ara:array[0..1000] of integer;ar,arq:array[0..1000] of integer; ts,sum,a:integer;
begin
assign(input,'input.txt');reset(input);
 assign(output,'output.txt');rewrite(output);
readln(input,a,n);
ans:=10000;
 
for i:=1 to n do begin
read(input,ar[i]);ts:=ts+2*ar[i];end;
 
  if ts<a then writeln(output,'-1') else
 
  begin
 
     ara[1]:=3;for i:=2 to 15 do begin ara[i]:=3*ara[i-1];end;
 
 for i:=1 to ara[n] do begin if arq[n]<2 then begin
  inc(arq[n]);sum:=sum+ar[n];inc(nm);
  end
 else
  begin
   g:=n;while arq[g]>1 do begin sum:=sum-ar[g]*arq[g];dec(nm,arq[g]);arq[g]:=0;dec(g);end;
 
 inc(arq[g]);sum:=sum+ar[g];inc(nm);end;
if sum=a then begin if nm<ans then ans:=nm;end;end;
 
 if ans>1000 then writeln(output,'0') else writeln(output,ans);   end;
 
close(output);close(input);
end.
вот код программы но здесь выходит ошибка
Pascal
1
ara[i]:=3*ara[i-1];
что арифметическое переполнение, пожалуйста исправьте ошибки, и если исправили попробуйте просмотреть пример в условии.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2012, 19:09
Ответы с готовыми решениями:

Олимпиадная задача Монетки: Подскажите в чем корявость кода
Задача http://********/?main=task&amp;id_task=106 На столе лежат n монеток. Некоторые из них лежат...

Задача Монетки
Ссылка на задачу http://********/index.asp?main=solution&amp;id_task=106 На столе лежат n монеток....

Экстренно требуется ассистенция.Задача про монетки и сдачу.
Дано натуральное число N(N&lt;=99). Получить все способы выплаты суммы N с помощью монет достоинством...

Моделирование монетки
Здравствуйте, при написании статьи про мат ожидание, встал вопрос показать все в графиках. Пример,...

3
Smash Mouth
24.12.2012, 19:46 2
Цитата Сообщение от Venus Посмотреть сообщение
вот код программы но здесь выходит ошибка что арифметическое переполнение, пожалуйста исправьте ошибки, и если исправили попробуйте просмотреть пример в условии.
Здесь:
Pascal
1
ara[1]:=3;for i:=2 to 15 do begin ara[i]:=3*ara[i-1];end;
Тип integer допускает максимальное значение -32768..32767, а у тебя получится число 315, это больше миллиона, поэтому ошибка.
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 4
24.12.2012, 19:57  [ТС] 3
Цитата Сообщение от Smash Mouth Посмотреть сообщение
Здесь:
Pascal
1
ara[1]:=3;for i:=2 to 15 do begin ara[i]:=3*ara[i-1];end;
Тип integer допускает максимальное значение -32768..32767, а у тебя получится число 315, это больше миллиона, поэтому ошибка.
Сделал, теперь работает, но надо еще вывести какие цифры нужны. Ну, например в первом примере
введено:
5 2
1 2
а должен выйти результат:
3
2 2 1
а у меня выходит просто 3, помогите еще добавить в выводу числа(монеты) которые нужно заплатить
0
Smash Mouth
24.12.2012, 20:10 4
Я в твоем коде ничего не понял, напиши хотя бы какая переменная зачем нужна, а то сумбур какой-то.
24.12.2012, 20:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2012, 20:10
Помогаю со студенческими работами здесь

Подкидывание монетки
Монету подкидывают до тех пор пока будет орел.Описать простор элементарных событий. Я так понимаю...

2 фальшивые монетки
Имеем 22 настоящих монеты и 2 фальшивых , одна легче , другая тяжелее настоящей. Как за 3...

Подбрасывание монетки
Монету бросают 10 раз. Найти вероятность выпадения одной цепочки РГГР? Помогите, пожалуйста, не...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru