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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2015, 18:43   #11
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от Даша Кузьмина Посмотреть сообщение
а если будет ещё и пятёрка, то число разделится на 10, а значит, будет содержать нуль, коего быть не должно.
Не догнал, почему число не может оканчиваться пятеркой...

Зы. потому что получающееся число не будет четным

Последний раз редактировалось Smogg; 07.03.2015 в 18:48.
Smogg вне форума Ответить с цитированием
Старый 07.03.2015, 18:59   #12
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Решение в лоб на Pascal:

Код:
type
  TDigit = 0..9;

function check_digits(a: integer): boolean;
var
  digs: set of TDigit;
  d: TDigit;
begin
  digs := [0];
  while a > 0 do begin
    d := a mod 10;
    if d in digs then begin
      result := false;
      exit;
    end;
    digs := digs + [d];
    a := a div 10;
  end;
  result := true;
end;

function check_divs(a: integer): boolean;
var
  d: TDigit;
  n: integer;
begin
  n := a;
  while n > 0 do begin
    d := n mod 10;
    if (d = 0) or (a mod d <> 0) then begin
      result := false;
      exit;
    end;
    n := n div 10;
  end;
  result := true;
end;

var
  a, n: integer;

begin
  n := 0;
  for a := 1000000 to 9999999 do begin
    if check_digits(a) and check_divs(a) then begin
      inc(n);
      writeln(n, '. ', a);
    end;
  end;
  readln;
end.
Можно оптимизировать, но здесь тупо перебор всех 7-значных чисел и проверка для каждого необходимых условий.

Вот такие числа:
Код:
1. 1289736
2. 1293768
3. 1369872
4. 1372896
5. 1376928
6. 1382976
7. 1679328
8. 1679832
9. 1687392
10. 1738296
11. 1823976
12. 1863792
13. 1876392
14. 1923768
15. 1936872
16. 1982736
17. 2137968
18. 2138976
19. 2189376
20. 2317896
21. 2789136
22. 2793168
23. 2819376
24. 2831976
25. 2931768
26. 2937816
27. 2978136
28. 2983176
29. 3186792
30. 3187296
31. 3196872
32. 3271968
33. 3297168
34. 3298176
35. 3619728
36. 3678192
37. 3712968
38. 3768912
39. 3796128
40. 3816792
41. 3817296
42. 3867192
43. 3869712
44. 3927168
45. 3928176
46. 6139728
47. 6379128
48. 6387192
49. 6389712
50. 6391728
51. 6719328
52. 6719832
53. 6731928
54. 6893712
55. 6913872
56. 6971328
57. 6971832
58. 7168392
59. 7198632
60. 7231896
61. 7291368
62. 7329168
63. 7361928
64. 7392168
65. 7398216
66. 7613928
67. 7639128
68. 7829136
69. 7836192
70. 7839216
71. 7861392
72. 7863912
73. 7891632
74. 7892136
75. 7916328
76. 7916832
77. 7921368
78. 8123976
79. 8163792
80. 8176392
81. 8219736
82. 8312976
83. 8367912
84. 8617392
85. 8731296
86. 8796312
87. 8912736
88. 8973216
89. 9163728
90. 9176328
91. 9176832
92. 9182376
93. 9231768
94. 9237816
95. 9278136
96. 9283176
97. 9617328
98. 9617832
99. 9678312
100. 9718632
101. 9723168
102. 9781632
103. 9782136
104. 9812376
105. 9867312
Arigato вне форума Ответить с цитированием
Старый 08.03.2015, 18:05   #13
Даша Кузьмина
 
Аватар для Даша Кузьмина
 
Регистрация: 07.03.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Решение в лоб на Pascal:
...
Круто! Спасибо большое-пребольшое!
Даша Кузьмина вне форума Ответить с цитированием
Старый 08.03.2015, 18:08   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Тоды и моё решение (делфи)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var List: TStringList;
procedure Calc(Text1,Text2 : string);
var i,k: Integer;
    s: String;
    b: Boolean;
begin
  if Length(Text2)>1 then
    for i:=1 to Length(Text2) do Calc(Text1+Text2[i],Copy(Text2,1,i-1)+Copy(Text2,i+1,Length(Text2)))
  else begin
    s:=Text1+Text2;
    k:=StrToInt(s);
    b:=True;
    for i:=1 to 7 do b:=b and (k mod StrToInt(s[i])=0);
    if b then List.Add(s);
  end;
end;
begin
  List:=TStringList.Create;
  Calc('','1236789');
  Label1.Caption:=IntToStr(List.Count);
  Memo1.Lines.Assign(List);
  List.Free;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.03.2015, 03:00   #15
Даша Кузьмина
 
Аватар для Даша Кузьмина
 
Регистрация: 07.03.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Тоды и моё решение (делфи)
...
И Вам спасибо!
Даша Кузьмина вне форума Ответить с цитированием
Старый 09.03.2015, 12:20   #16
Jurijus123
Заблокирован
 
Регистрация: 12.11.2014
Сообщений: 120
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Тоже в уме без использования ручки и бумаги, набросав несколько строк в программе
магия цыфар:
Цитата:
7*8=56
7/8=0.875
56/0.875=64
56*0.875=49
64-8=56
49+8=57
57-56=1
0.875+1=1.875
56*1.875=105
7+8=15
64-49=15
15*7=105
Jurijus123 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В данном целом числе N, заменить нулями все цифры стоящие на нечетных позициях в числе TsykunovDmitriy Паскаль, Turbo Pascal, PascalABC.NET 3 07.05.2014 22:21
Переставить местами в каждом числе n из заданной последовательности чисел, первую и последнюю цифры (С++) azotklas Помощь студентам 2 25.01.2014 05:44
Составить функцию, которая определяет, верно ли, что в заданном числе все цифры стоят по возрастанию. GroMkiY Помощь студентам 2 17.10.2013 10:30
Дано натуральное число. Верно ли, что в этом числе нет цифры А. А задается с клавиатуры. Женечка92 Помощь студентам 9 03.04.2010 16:06