Var
x:double;
begin
x:=102;
while x<=999 do begin Writeln(x,' ',exp(ln(x)/3)); x:=x+3 end;
end.
Результат выполнения программы:
102 4.67232872835526
105 4.71769398031653
108 4.7622031559046
111 4.80589553370533
114 4.84880758583988
117 4.89097324650875
120 4.93242414866094
123 4.97318983326859
126 5.01329793496458
129 5.05277434720856
132 5.09164336965949
135 5.12992784003009
138 5.16764925236362
141 5.2048278633942
144 5.24148278841779
147 5.27763208790408
150 5.31329284591305
. . .
960 9.86484829732188
963 9.87511349546425
966 9.8853573964768
969 9.89558011047944
972 9.90578174668388
975 9.91596241340387
978 9.92612221806536
981 9.93626126721644
984 9.94637966653718
987 9.95647752084936
990 9.96655493412597
993 9.97661200950066
996 9.98664884927706
999 9.99666555493786
Условие у нас следующее.
1)в 16ричном виде число двузначное и оканчивается на А
2)в 8ричном виде число трехзначное
п1 соответствует 16 цифр, потому просто все их можно переберать и по очереди перевести в 8ричный вид.
или можно посмотреть значения краев 3значных 8ричных.
111_8 = 49_16 - значит 4А уже будет 3значным 8ричным
777_8 = 1FF_16 - мы не выйдем за верхний край
т.е. нам подходят числа 4А, 5А, 6А, 7А, 8А, 9А, АА, BA, CA, DA, EA, FA - всего 12 шт
Проверяем
# Код на ruby 2.2.3p173
for i in 0..15
s = i.to_s(16) + "a"
puts "X_16 = #{s}, X_10 = #{s16 = s.to_i(16)}, X_8 = #{s16.to_s(8)}"
end
X_16 = 0a, X_10 = 10, X_8 = 12
X_16 = 1a, X_10 = 26, X_8 = 32
X_16 = 2a, X_10 = 42, X_8 = 52
X_16 = 3a, X_10 = 58, X_8 = 72
X_16 = 4a, X_10 = 74, X_8 = 112
X_16 = 5a, X_10 = 90, X_8 = 132
X_16 = 6a, X_10 = 106, X_8 = 152
X_16 = 7a, X_10 = 122, X_8 = 172
X_16 = 8a, X_10 = 138, X_8 = 212
X_16 = 9a, X_10 = 154, X_8 = 232
X_16 = aa, X_10 = 170, X_8 = 252
X_16 = ba, X_10 = 186, X_8 = 272
X_16 = ca, X_10 = 202, X_8 = 312
X_16 = da, X_10 = 218, X_8 = 332
X_16 = ea, X_10 = 234, X_8 = 352
X_16 = fa, X_10 = 250, X_8 = 372
Все верно. Ответ 12
===== PascalABC.NET =====
function GCD(a, b: integer): integer;// НОД
begin
while b <> 0 do
begin
a := a mod b;
Swap(a, b)
end;
Result := a
end;
procedure RedFrac(var a, b: integer);// сокращение дроби
begin
var sgna := Sign(a); // мы должны учитывать знак!
var sgnb := Sign(b); // мы должны учитывать знак!
a := Abs(a);
b := Abs(b);
var d := GCD(a, b);
a := (a div d) * sgna;
b := (b div d) * sgnb
end;
begin
var (p1, q1) :=
ReadInteger2('Дробь 1. Введите числитель и знаменатель:');
var (p2, q2) :=
ReadInteger2('Дробь 2. Введите числитель и знаменатель:');
var p3 := p1 * q1 + p2 * q2;
var q3 := q1 * q2;
RedFrac(p3, q3);
Println(p3, '/', q3)
end.