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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2008, 16:49   #1
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию число Смита!

Известно, что число Смита - это такое составленное число, сумма цифр которого равняется сумме цифр всех его простых сомножителей. Так, примером числа Смита может служить 202, поскольку 2+0+2=4, і 2+1+0+1=4 (202=2*101).
Найдите количество чисел Смита на промежутке [N, M], где 0<N,M<=30000.
Формат входных данных. ВО входном файле input.txt содержат числа N и M разделенные пропуском.
Формат исходных данных. В исходный файл output.txt вывести количество чисел Смита.
Пример входных и исходных данных.
input.txt
200 205
output.txt
1
Snake08 вне форума Ответить с цитированием
Старый 08.12.2008, 18:58   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
uses crt;
var n,m,i,l,sum,obr,kol:integer;
    f:text;

function IsSimple(x:integer):boolean;
var j:integer;
begin
IsSimple:=true;
 for j:=2 to x-1 do
  if x mod j=0 then IsSimple:=false;
end;

function Dig(x:integer):integer;
var s:string;
    p,code,e,b:integer;
begin
str(x,s);
e:=0;
for p:=1 to length(s) do
 begin
  val(s[p],b,code);
  e:=e+b;
 end;
Dig:=e;
end;

begin
clrscr;
assign(f,'c:\1.txt');
reset(f);
read(f,n);read(f,m);
close(f);
kol:=0;
for i:=n to m do
 begin
  sum:=0;
  obr:=Dig(i);
  for l:=2 to i-1 do
   if i mod l=0 then begin
                       if IsSimple(l) then sum:=sum+Dig(l);
                     end;
  if (sum=obr)and(not(IsSimple(i))) then begin
                                          writeln(i);
                                          inc(KOL);
                                         end;

 end;

 assign(f,'c:\2.txt');
 rewrite(f);
 write(f,kol);
 close(f);
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 08.12.2008, 20:22   #3
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию

спасибо огромное!
Только не мог бы ты ко всем 3 моим задачам обяснения хода роботы написать!
Пожалуйста!
Snake08 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
4х байтовое число bvana Общие вопросы C/C++ 7 05.12.2008 00:08
Число werser Помощь студентам 12 18.06.2008 20:16
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43
Число N, заменить одну из его цифр, чтобы получилось число, max близкое к некоторой степени двойки urgu_st Помощь студентам 13 23.10.2007 09:14