P1163 银行贷款

作者: qiqi 分类: 二分查找/答案 发布时间: 2025-10-03 13:55

查看题目

当一个人从银行贷款后,在一段时间内他(她)将不得不每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。

#include <bits/stdc++.h>
using namespace std;

int w0;
int w;
int m;

bool check(double h);

int main()
{
	double l, r, mid, ans;

	scanf("%d%d%d", &w0, &w, &m);

	l = 0.00000001, r = 3.0;

	while (r - l > 0.0000001)
	{

		mid = (l + r) / 2;

		if (check(mid))
		{
			//利息够低,能还完,看还能不能继续提高利率
			ans = mid, l = mid;
		}
		else
		{
			//利息太高还不完,所以降低利息
			r = mid;
		}

	}

	printf("%.1lf\n", ans * 100);
	return 0;
}

bool check(double h)
{
	//判断以利率h,m个月,每月还款w元。是否能还完计划
	double zdk = w0;	//总的贷款额度

	for (int i = 0; i < m; i++)
	{
		//第一个月还的时候的本金加利息
		zdk = zdk * (1 + h);
		zdk -= w;

		if (zdk <= 0)
			return true;
	}

	return false;

}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

标签云