Задача ТRЕЕ (20 балів)
Сергійко, обрізаючи сухі гілки на
дереві, виявив цікаву його особливість:
-
жодна суха гілка на собі не має інших гілок;
-
від стовбура дерева, як і від кожної несухої гілки, безпосередньо
відростає одна й та ж кількість гілок, наприклад, N.
Сергійко з'ясував, що знаючи число
N (2 <= N <= 100), а також кількість всіх сухих гілок на дереві - М (0
<= М <= 1000), можна завжди взнати загальну кількість всіх гілок на
такому дереві.
Необхідно
написати програму, яка б обчислювала загальну кількість гілок або вказувала на невідповідність чисел N та М умові
задачі.
Вхідні дані: Єдиний рядок вхідного файлу
TREE.DAT містить цілі числа N та М.
Вихідні дані: Єдиний рядок вихідного файлу
TREE.SOL має містити загальну кількість гілок або текст “mismatch” якщо
числа N та М не відповідають умові задачі.
Приклад;
ТRЕЕ.DАТ
|
ТRЕЕ.SOL
|
3 7
|
9
|
3 2
|
mismatch
|
Розв’язок
Потрібно побудувати неповне дерево з основою N. При
переході на наступний рівень кількість сухих віток необхідно збільшувати на
N-1, загальну кількість віток на N. При цьому врахувати формулу визначення
кількості віток на кожному рівні
{$APPTYPE
CONSOLE}
var i,riv,n,m,s,k,r,k1
:integer;
f:text;
begin
assign(f,'tree.dat');
reset(f);
readln(f,n,m);
close(f);
k:=1; riv:=0;r:=0;
while (k<m)do begin
i:=1;
while
(k<m)and(i<=round(riv*(ln(n)))) do
begin r:=r+n;i:=i+1;k:=k+n-1;
end;
riv:=riv+1;
end;
assign(f,'tree.sol');
rewrite(f);
if
(m=k)or (m=0)then writeln(f,r)
else writeln(f,'mismatch');
close(f);
end.
|