1) Все правильно, это и будет разность между максимумом и минимумом program one; var input,max,min:integer; i:integer; begin readln(input); max:=input; min:=input; for i:=2 to 25 do begin readln(input); if input>max then max:=input; if input<min then min:=input; end; writeln(max-min); end.
2) Гораздо проще не суммировать в цикле степени половины, а воспользоваться тем, что . program two; var res:real; i,n:integer; begin readln(n); res:=0.5; for i:=2 to n do res*=0.5; res:=2-res; writeln(res); end.
3) Здесь существует несколько реализации; в частности, можно было просто считать число как строку и возвратить ее в перевернутом виде (ReverseString(s)), не заботясь о переполнении, однако я решил, что по логике задания нужно делать через числа. Впрочем, для выявления случаев переполнения все равно используется переворот строки program three; var a,b:int64; {можно использовать uint64, если в вашей среде Паскаля этот тип поддерживается, тогда число в строке ниже надо заменить} begin readln(a); if ReverseString(IntToStr(a))>'9223372036854775807' then writeln('Слишком много') else begin while a>0 do begin b:=10*b+a mod 10; a:=a div 10; end; writeln(b); end; end.
#include <iostream>
#include <vector>
using namespace std;
void hanoi(int n, int f, int t) {
if (n == 0) {
return;
}
int v = 6 - f - t;
if (f == t - 1 || (f == 3 && t == 1)){
hanoi(n - 1, f, v);
cout << n << " " << f << " " << t << endl;
hanoi(n - 1, v, t);
}else{
hanoi(n - 1, f, t);
cout << n << " " << f << " " << v << endl;
hanoi(n - 1, t, f);
cout << n << " " << v << " " << t << endl;
hanoi(n - 1, f, t);
}
}
int main (){
int n;
cin >> n;
hanoi(n, 0, 0); //тут какая - то проблема при выводе, я не понял как выводить их. Если вдруг решите проблему, то напишите в комменты под задачей!!
}
Объяснение:
Мне тоже надо , кто сделал "Быстрое возведение в степень" и
"Количество разбиений на слагаемые" отправьте мне решения
program one;
var input,max,min:integer;
i:integer;
begin
readln(input);
max:=input;
min:=input;
for i:=2 to 25 do begin
readln(input);
if input>max then max:=input;
if input<min then min:=input;
end;
writeln(max-min);
end.
2) Гораздо проще не суммировать в цикле степени половины, а воспользоваться тем, что .
program two;
var res:real;
i,n:integer;
begin
readln(n);
res:=0.5;
for i:=2 to n do res*=0.5;
res:=2-res;
writeln(res);
end.
3) Здесь существует несколько реализации; в частности, можно было просто считать число как строку и возвратить ее в перевернутом виде (ReverseString(s)), не заботясь о переполнении, однако я решил, что по логике задания нужно делать через числа. Впрочем, для выявления случаев переполнения все равно используется переворот строки
program three;
var a,b:int64; {можно использовать uint64, если в вашей среде Паскаля этот тип поддерживается, тогда число в строке ниже надо заменить}
begin
readln(a);
if ReverseString(IntToStr(a))>'9223372036854775807' then writeln('Слишком много') else begin
while a>0 do begin
b:=10*b+a mod 10;
a:=a div 10;
end;
writeln(b);
end;
end.