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

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

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

> Целочисленная арифметика (задача), Нужна помощь
Gambit
сообщение 24.06.2005 18:37
Сообщение #1


Гость






СРОЧНО Нужна помощь в решении задачи:
Дано натур. число N. Определить кол-во 8 значных чисел, у которых сумма цифр в цифровой записи числа меньше, чем N. Если таких чисел нет, выводим НЕТ.

Тут мой вариант, только считается как то странно и вводить можно любые числа, а не только 8 значные.

Код
program pro;
uses crt;
var x:array[1..8]of integer;
i,n,m,sum,s:integer;
begin
write('Вводим M для сравнения');
readln(m);
write('Ввод n: ');
readln(n);
write('Ввод 8 значных чисел');
for i:=1 to n do
begin
readln(x[i]);
sum:=sum+x[i];
end;
if sum<m then
begin
s:=s+1;
writeln('Таких чисел: ',sum);
end
else
writeln('Нет таких чисел');
readkey;
end.


Сообщение отредактировано: Gambit - 24.06.2005 19:08
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 24.06.2005 21:33
Сообщение #2


Гость






Кстати, как ни странно, тупой перебор (с некоторым ограничением) дает результат за вполне приемлемое время, измеряемое секундами (3.3 секунды при N = 44):
program pro;
uses crt;

var
n: integer;
i1, i2, i3, i4, i5, i6, i7, i8: byte;
count: longint;
begin
write('n = '); readln(n);
count := 0;
if (n > 0) or (n < 9*8) then begin
for i1 := 1 to 9 do if i1 < n then
for i2 := 0 to 9 do if (i1+i2) < n then
for i3 := 0 to 9 do if (i1+i2+i3) < n then
for i4 := 0 to 9 do if (i1+i2+i3+i4) < n then
for i5 := 1 to 9 do if (i1+i2+i3+i4+i5) < n then
for i6 := 0 to 9 do if (i1+i2+i3+i4+i5+i6) < n then
for i7 := 0 to 9 do if (i1+i2+i3+i4+i5+i6+i7) < n then
for i8 := 0 to 9 do
if (i1+i2+i3+i4+i5+i6+i7+i8) < n
then inc(count);
end;
if count = 0 then writeln('none')
else writeln('count = ', count);
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 24.06.2025 4:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"