Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2009, 23:57   #1
MsJane
Пользователь
 
Аватар для MsJane
 
Регистрация: 18.12.2009
Сообщений: 10
Вопрос (паскль)найти сумму всех n-значных чисел кратных k(Задачка легкая, но дойти не может, помогите плиз)

найти сумму всех n-значных чисел кратных k (1<=n<=4)
var k,i,s:integer;
begin
write('k=');
readln(k);
s:=0; i:=0;
for i:=1 to 9999 do
if (i mod k = 0) then s:=s+i;
writeln('S=,s);
readln;
end.
(это не правильно тут еще надо Н вводить но до меня не может дойти как это сделать)
Помогите пожалуйста, ну или посоветуйте)

Последний раз редактировалось MsJane; 19.12.2009 в 00:01.
MsJane вне форума Ответить с цитированием
Старый 19.12.2009, 00:07   #2
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

тойсть нужно сделать ввод для н, если введено 2, то в цикле перебираем от 10 до 99, если 3 , то 100...999 и тд!
Lemo вне форума Ответить с цитированием
Старый 19.12.2009, 00:33   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
for i:=trunc(exp((n-1)*ln(10))) to trunc(exp(n*ln(10))) - 1 do
eoln вне форума Ответить с цитированием
Старый 19.12.2009, 00:33   #4
CodeExpert
Заблокирован
 
Регистрация: 30.10.2009
Сообщений: 468
По умолчанию

Если непосредственно по вашей проблеме, то вот мой пример работы, только здесь прикручен счетчик кратных:
Код:
program zna;
uses Crt;
var k:integer; //изначальное число
    maxpred:integer; //"потолок" значности
    n:integer; //значность
    i:integer; //счетчик
    sum:integer; //сумма кратных чисел
    kol:integer; //кол-во кратных чисел
begin
ClrScr; {очистка экрана}
Writeln('Введите пожалуйста k');
Readln(k);
{выполняем пока не удовлетворит услвовию что (1<=n<=4)}
repeat
Writeln('Введите значность чисел');
Readln(n);
until (n>=1) and (n<=4);
{вычисляем "потолок" значности, к примеру
если значность 2, то потолок будет 99}
maxpred:=round(exp(ln(10)*n))-1;
sum:=0;
kol:=0; 
for i:=1 to maxpred do
 begin
  if (k mod i = 0) then begin sum:=sum+i;kol:=kol+1;end;
  end;
Writeln('Кол-во ',n,' - значных чисел, кратных ',k,' = ',kol);
Writeln('Сумма всех ',n,' - значных чисел, кратных ',k,' = ',sum);
Readln;
end.
Если слегка подправить ваш код, то выглядело примерно так бы:
Код:
program kratnost;
var k,i,n,s,m:integer; 
begin
write('k=');
readln(k);
repeat
write('n=');
readln(n);
until (n>=1) and (n<=4);
m:=round(exp(ln(10)*n))-1;
//i не нужно было обнулять!
s:=0; 
for i:=1 to m do
 begin
  if (k mod i = 0) then s:=s+i;
  end;
writeln('S=',s);
readln;
end.
CodeExpert вне форума Ответить с цитированием
Старый 19.12.2009, 01:28   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от CodeExpert Посмотреть сообщение
m:=round(exp(ln(10)*n))-1;
s:=0;
for i:=1 to m do
[/CODE]
Позволю заметить, что и на начало цикла следует накладывать условие, а именно i должно стартовать не от 1, а от round(exp(ln(10)*(n-1)))
Цитата:
Сообщение от CodeExpert Посмотреть сообщение
if (k mod i = 0)
А вот с этим замечанием полностью не согласен
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка легкая, но дойти не может) MsJane Фриланс 3 19.12.2009 14:46
Легкая задачка в C# OnlySergio Помощь студентам 5 21.11.2009 15:02
Легкая задачка Васька Паскаль, Turbo Pascal, PascalABC.NET 1 29.11.2008 14:55
дойти не может что к чему if-soft Паскаль, Turbo Pascal, PascalABC.NET 7 07.10.2008 10:45
Помогите с решением задачи, плиз!(легкая) alpha256 Помощь студентам 1 31.05.2008 22:35