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

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

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

 
 Ответить  Открыть новую тему 
> Целочисленная арифметика (задача), Нужна помощь
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Gambit,
Ты по-моему не до конца понял условие задачи...
Твоя программа должна просто запрашивать число N, и подсчитывать, сколько чисел из интервала
[10000000 .. 99999999] имеют сумму цифр меньше, чем N... Никаких 8-значных чисел тебе вводить не нужно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Кстати, как ни странно, тупой перебор (с некоторым ограничением) дает результат за вполне приемлемое время, измеряемое секундами (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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

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

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


Вот эта задача в моём понимании выглядит так:
{
Дано натур. число N. Определить кол-во 8 значных чисел,
у которых сумма цифр в цифровой записи числа меньше, чем N.
Если таких чисел нет, выводим НЕТ.
}

program _8digits;

function SumOfDigits (x: longint): integer;
var
rem, { остаток }
sum: integer;
begin
sum := 0;
While X <> 0 Do
Begin
rem := X Mod 10; { остаток от деления на 10, т.е последняя цифра числа }
inc (sum, rem);
X:=X Div 10;
End;
SumOfDigits := sum;
end;

var
n, count: integer;
i : longint;

begin
write ('Enter 1 <= n <= 72 : '); readln (n);
count := 0;

for i := 10000000 to 99999999 do
begin
if i mod 10000 = 0 then
writeln (i);
if SumOfDigits (i) < N then
inc(count);
end;

if count = 0 then
writeln('none')
else
writeln('count = ', count);
readln;
end.


В Turbo Pascal 7.0 я не долждался получения результата, прождав пару минут где-то на итерации числа 22400000.
Зато во Free Pascal 2.0.0 я получил результат в течение 1-минуты и пару секунд.


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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