Степень симметрии - Free Pascal
Формулировка задачи:
Помогите решить задачу
Пытался сам решить, но что-то не так в программе, может посоветуете что можно изменить, или подскажете как решать такие задачи.
- Степенью симметрии натурального числа называется количество пар его десятичных цифр, в которых цифры совпадают и расположены симметрично относительно середины десятичной записи этого числа. Если некоторая цифра стоит посередине десятичной записи, её тоже нужно учитывать в паре с ней самой. Найти степень симметрии числа N.
- (N < 2·109)
- Пример: ввод(123322) вывод(2)
var n,t:longint; k,i,s,j,a:integer; v:array[1..199999999] of byte; begin read(n); k:=0;i:=0;s:=0;j:=0;a:=0; t:=n; while n>0 do begin inc(k); n:=n div 10; end; //количество цифр = k n:=t;t:=0; for i:=k downto 1 do begin v[i]:=n mod 10; n:=trunc(n div 10);end; //заполнение массива цифрами n:=0; if k mod 2 <> 0 then //для нечетных чисел begin s:=(k div 2)+1; j:=1; for i:=1 to (k div 2) do if v[s-i]=v[s+i] then j:=j+1; end; if k mod 2 = 0 then //для четных чисел begin s:=k; for i:=1 to (k div 2) do begin if v[i]=v[s] then a:=a+1;s:=s-1; end; end; writeln(a); end.
Решение задачи: «Степень симметрии»
textual
Листинг программы
program Symmetry; type TDigits = array [0..9] of byte; var N: longint; Len, Count, i: integer; Digits: TDigits; begin //readln(N); N := 123322; Len := 0; repeat Digits[Len] := N mod 10; N := N div 10; Inc(Len); until N = 0; Count := 0; for i := 0 to (Len div 2) + (Len mod 2) - 1 do if Digits[i] = Digits[Len - i - 1] then Inc(Count); writeln(Count); end.
Объяснение кода листинга программы
В данном коде на языке Free Pascal реализована задача на вычисление степени симметрии числа.
- Тип TDigits объявляет массив Digits, который будет содержать цифры числа N.
- Переменная N инициализируется значением 123322.
- Переменная Len инициализируется значением 0 и используется для хранения количества цифр числа N.
- В цикле repeat производится разбивка числа N на отдельные цифры и их сохранение в массиве Digits.
- Переменная Count инициализируется значением 0 и используется для подсчета количества одинаковых цифр в массиве Digits.
- В цикле for проверяется, являются ли текущая и обратная (считая от конца массива) цифры одинаковыми. Если да, то к переменной Count прибавляется единица.
- Значение переменной Count выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д