Определить количество натуральных чисел, таких, что сумма любых трех подряд идущих цифр числа делится на 3 - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Определить, сколько существует натуральных k-значных (3<=k<=30) чисел, таких что сумма любых трех подряд идущих цифр числа делится на 3 без остатка. Например: Ввод: 3 Вывод: 300

Решение задачи: «Определить количество натуральных чисел, таких, что сумма любых трех подряд идущих цифр числа делится на 3»

textual
Листинг программы
  1. type m=array[1..32] of integer;
  2. var
  3.   n1,n2,d:m;
  4.   k,i,j:integer;
  5.   ok:boolean;
  6. procedure initmas(k:integer;var a:m);
  7. var
  8.   i:integer;
  9. begin
  10.   for i:=1 to 32 do a[i]:=0;
  11.   if k<>0 then a[k]:=1;
  12. end;
  13.  
  14. procedure sum(a,b:m;var c:m);
  15. var
  16.   i:integer;
  17. begin
  18.   for i:=1 to 31 do begin
  19.     c[i]:=a[i]+b[i];
  20.     if c[i]>9 then begin
  21.       a[i+1]:=a[i+1]+c[i] div 10;
  22.       c[i]:=c[i] mod 10;
  23.     end;
  24.   end;
  25. end;
  26.  
  27. function check(a:m;k:integer):boolean;
  28. var
  29.   i:integer;
  30. begin
  31.   i:=32;
  32.   while a[i]=0 do if i>1 then dec(i);
  33.   if i>k then check:=true else check:=false;
  34. end;
  35.  
  36. procedure printm(a:m);
  37. var
  38.   i:integer;
  39. begin
  40.   i:=32;
  41.   while a[i]=0 do if i>1 then dec(i);
  42.   for i:=i downto 1 do write(a[i]);
  43.   writeln;
  44. end;
  45.  
  46. begin
  47.   write('k=');readln(k);
  48.   initmas(k,n1);
  49.   initmas(1,n2);
  50.   initmas(0,d);
  51.   repeat
  52.     i:=1;
  53.     repeat
  54.       j:=0;ok:=false;
  55.       j:=j+n1[i]+n1[i+1]+n1[i+2];
  56.       if (j>0) and (j mod 3=0) then begin sum(d,n2,d);ok:=true;end;
  57.       i:=i+1;
  58.     until (i>k-2) or (ok);
  59.     sum(n1,n2,n1);
  60.   until check(n1,k);
  61.   printm(d);
  62.   readln;
  63. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы