![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Славик |
![]()
Сообщение
#1
|
Гость ![]() |
Есть два числа n, m. Нужно посчитать количество сум которые удоволетворяют условиям:
1) количество слагаемых не больше m 2) каждое из слагаемых не больше n, причем ноль считается за слагаемое, и слагаемые могут повторяться 3) например суммы 1+3+5 и 1+5+3 считаются идентичными Я написал программу, но не уверен в том что она рабатает верно Код var f,f1:text; n,m:integer; sum:integer; procedure ff(j,lev:integer); var i:integer; begin if lev<=m then begin for i:=j to n do begin inc(sum); ff(i,lev+1); end; end; end; begin assign(f,'sums.in'); assign(f1,'sums.out'); reset(f); rewrite(f1); readln(f,n,m); sum:=0; ff(0,1); writeln(f1,sum); close(f); close(f1); end. Может ли кто-нибудь проверит эту прогу? |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
У тебя не совсем правильно считалось количество комбинаций... Если я не ошибаюсь - то вот так должно быть (я добавил и вывод самих комбинаций тоже):
var P.S. klem4, в той задаче нельзя было использовать одинаковые слагаемые, насколько я помню - а это меняет решение... |
Славик |
![]()
Сообщение
#3
|
Гость ![]() |
|
Славик |
![]()
Сообщение
#4
|
Гость ![]() |
Volvo, сегодня решил подумать над прогой еще чуть-чуть, и понял что правильно все-таки работает мой вариант, у тебя на примере m=2, n=2 выводиться ответ 10 вариантов, а самих вариантов выводиться 9
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
А первый - пустая строка? Забыл?
Надо просто НЕ учитывать ее, и writeln(sum - 1); { Делать вот так } |
Славик |
![]()
Сообщение
#6
|
Гость ![]() |
Да я просто к тому, что моя первая прога вроде работает верно!
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Вот именно, что "вроде"... Ты же не видишь, КАКИЕ комбинации она подсчитывает... Вот если бы видел - тогда можно было сравнивать...
|
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 9:53 |