Помогите решить задачу на C++
Банковские проценты
Вклад в банке составляет x
рублей. Ежегодно он увеличивается на p
процентов, после чего дробная часть от копеек отбрасывается. Определите, через сколько лет вклад составит не менее y
рублей. В задаче запрещено использовать дробные числа.
Входные данные
Программа получает на вход три натуральных числа: x
, p
, y
(x⩽2000
, p⩽100
, y⩽2000
).
Выходные данные
Программа должна вывести одно целое число — ответ задачи.
Примеры
Ввод
Вывод
100
10
200
8
Этот код работает но при отрицательных числах просто не хочет считать:
#include <iostream>
using namespace std;
int main() {
int x, p, y;
cin >> x >> p >> y;
int i = 0;
while (x < y) {
x *= (1 + p / 100.0);
x = int(100 * x) / 100;
i += 1;
}
cout << i << std::endl;
return 0;
}
#include <cmath>
#include <iostream>
using namespace std;
int main() {
int x, p, y;
cin >> x >> p >> y;
cout << int(log((double)y / x) / log(1 + p / 100.0)) + (p != 100) << '\n';
}
а можно на пайтоне?
Если без дробей и могут понадобиться, например, триллионы, то так:
#include <iostream>
int main()
{
unsigned long long x, p, y, years = 0;
std::cin >> x >> p >> y;
while (true)
{
if (x >= y) break;
else
{
x = (100 + p) * x / 100;
++years;
}
}
std::cout << years << ' ' << x;
}
После количества лет накопленную сумму вклада тоже лучше выводить для контроля. А что за отрицательные числа? Ни вкладов, ни банковских процентов, выражаемых отрицательными числами, не бывает!