Помогите решить задачу ** паскале. Количество граждан некоторого города увеличивается...

0 голосов
32 просмотров

Помогите решить задачу на паскале. Количество граждан некоторого города увеличивается ежегодно на В%. Через сколько лет население города возрастет в m раз, если вначале было А человек.


Информатика (146 баллов) | 32 просмотров
0

Задачка на сложный процент, или "не проходили это слово"? )))

Дано ответов: 2
0 голосов
Правильный ответ

Для таких задач используется формула, называемая "сложный процент"
\displaystyle x=A\left(1+ \frac{B}{100}\right)^n
Здесь А - начальное значение, В - ежегодный процент, n - количество лет, х - результирующее значение.
По условию x=A×m, откуда можно найти n, затем округлив его до ближайшего большего целого.
\displaystyle Am=A\left(1+ \frac{B}{100}\right)^n; \quad m=\left(1+ \frac{B}{100}\right)^n; \\ \\ \ln(m)=n\ln\left(1+ \frac{B}{100}\right) \to n= \frac{\ln(m)}{\ln\left(1+ \displaystyle \frac{B}{100}\right)}

Получается, что значение А в условии является лишним.

// PascalABC.NET 3.1, сборка 1256 от 21.06.2016
begin
  var m:=ReadReal('m=');
  var B:=ReadReal('B%=');
  Writeln('Кол-во лет равно ',Ceil(Ln(m)/Ln(1+B/100)))
end.

Тестовые решения
m= 2
B%= 33
Кол-во лет равно 3

m= 3.5
B%= 18
Кол-во лет равно 8

(142k баллов)
0 голосов

//Pascal ABC.NET 3.1 сборка 1256

Var
 b,a,m,ar:real;
 i:integer;
begin
readln(b,m,a);
i:=0;
ar:=a*m;
while ar>a do
 begin
  inc(i);
  a:=a*(b/100+1);
 end;
writeln(i);
end.

Пример ввода:
33
2
100
Пример вывода:
3

(38.6k баллов)