Использован алгоритм 115б "Генератор перестановок", опубликованный в книге М.И.Агеев, В.П.Алик, Ю.И.Марков. Библиотека алгоритмов 101б - 150б. Москва, "Советское радио", 1978 и переведенный на Паскаль с языка АЛГОЛ-60.
const n=7; var p,d:array[2..n] of integer; a:array[1..n] of string:=('426','62','84','4','2','8','24'); prim115:boolean;
procedure Perm(n:integer); var t:string; k,q:integer; label index,iter,trans; begin if prim115 then begin prim115:=False; for k:=2 to n do begin p[k]:=0; d[k]:=1 end end; k:=0; index: q:=p[n]+d[n]; p[n]:=q; if q=n then begin d[n]:=-1; goto iter end; if q<>0 then goto trans; d[n]:=1; k:=k+1; iter: if n>2 then begin n:=n-1; goto index end; q:=1; prim115:=true; trans: q:=q+k; t:=a[q]; a[q]:=a[q+1]; a[q+1]:=t end;
var s,maxs:string; i,m:integer; pal:boolean; begin prim115:=true; maxs:=''; repeat s:=''; for i:=1 to n do s:=s+a[i]; m:=Length(s); pal:=True; for i:=1 to m div 2 do if s[i]<>s[m-i+1] then begin pal:=false; break end; if pal then if maxs<s then maxs:=s; Perm(n); until prim115; Writeln(maxs) end.
Программа вычисляет значения a в степени n,где n идет от 0 до b включительно.Краткий алгоритм программы:Импортируем Scanner(для ввода);В методе main создаем 5 переменных типа int и один объект класса Scanner;Вводим числа a,b;Запускаем "двойной" цикл;В цикле вычисляем a в степени n и выводим результат;Закрываем Scanner;
const
n=7;
var
p,d:array[2..n] of integer;
a:array[1..n] of string:=('426','62','84','4','2','8','24');
prim115:boolean;
procedure Perm(n:integer);
var
t:string;
k,q:integer;
label index,iter,trans;
begin
if prim115 then begin
prim115:=False;
for k:=2 to n do begin p[k]:=0; d[k]:=1 end
end;
k:=0;
index:
q:=p[n]+d[n]; p[n]:=q;
if q=n then begin d[n]:=-1; goto iter end;
if q<>0 then goto trans;
d[n]:=1; k:=k+1;
iter:
if n>2 then begin n:=n-1; goto index end;
q:=1; prim115:=true;
trans:
q:=q+k; t:=a[q]; a[q]:=a[q+1]; a[q+1]:=t
end;
var
s,maxs:string;
i,m:integer;
pal:boolean;
begin
prim115:=true; maxs:='';
repeat
s:='';
for i:=1 to n do s:=s+a[i];
m:=Length(s); pal:=True;
for i:=1 to m div 2 do
if s[i]<>s[m-i+1] then begin pal:=false; break end;
if pal then
if maxs<s then maxs:=s;
Perm(n);
until prim115;
Writeln(maxs)
end.
Результат выполнения программы:
842624426248
import java.util.Scanner;
public class Power {
public static void main(String[] args) {
int a,b,n,i,result;
Scanner scan = new Scanner(System.in);
System.out.println("a:");
a = scan.nextInt();
System.out.println("b:");
b = scan.nextInt();
for(n=0;n<=b;n++){
result=1;
for(i=0;i<n;i++){
result=result*a;
}
System.out.println(a+"^"+n+"="+result);
}
scan.close();
}
}
Объяснение:
Программа вычисляет значения a в степени n,где n идет от 0 до b включительно.Краткий алгоритм программы:Импортируем Scanner(для ввода);В методе main создаем 5 переменных типа int и один объект класса Scanner;Вводим числа a,b;Запускаем "двойной" цикл;В цикле вычисляем a в степени n и выводим результат;Закрываем Scanner;