FZU

来源:互联网 发布:淘宝网天猫童鞋 编辑:程序博客网 时间:2024/06/05 02:01

Problem 2244 Daxia want to buy house

Accept: 16    Submit: 70
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

daxia想买房,贷款需满足如下要求,在给出总价等各种需要数据的情况下,请帮他计算需要的首付和月供.

1. 采用等额本息还款法:

等额本息还款法:

即把按揭贷款的本金总额与利息总额相加,然后平均分摊到还款期限的每个月中,每个月的还款额是固定的,但每月还款额中的本金比重逐月递增、利息比重逐月递减.

计算公式:

每月还款额=贷款本金×[月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]

2. 由于商业贷款利率高于公积金贷款利率,优先公积金贷款,超出部分再采用商业贷款.

3. 银行至多给予贷款总额最多不超过70%,且数额必须为万的整数倍,daxia想尽量少首付多贷款.

 Input

测试包含多组数据,每组数据仅一行price_house, max_fund, rate_business, rate_fund, year. 如下详述:

price_house: 100 <= price_house <= 500, 整数, 表示房子总价,单位(万元);

max_fund: 50 <= max_fund <= 100, 整数, 表示公积金最多贷款数额,单位(万元);

rate_business:0 < rate_business < 10, 三位小数的浮点数,表示商业贷款年利率为rate_business%;

rate_fund: 0 < rate_fund < rate_business, 三位小数的浮点数,表示公积金贷款年利率为rate_fund%;

year: 20 <= year <= 30, 整数,表示贷款年限.

 Output

每组数据输出一行两个整数first_pay, month_pay.

first_pay: 首付金额,单位(万元)

month_pay: 月供金额,单位(元),请四舍五入.

 Sample Input

225 50 4.263 3.25 20

 Sample Output

68 9469

 Hint

样例各个金额如下:

房子总价 225

首付 68

商业贷款 107

公积金贷款 50

商贷月供 6633

公积金月供 2836

 Source

FOJ有奖月赛-2016年8月(daxia专场之过四题方有奖)


  1. 年利率转换为月利率 —— 月利率 = 年利率 / 12     注意:题目中的利率还要加上%所以再除以100
  2. 注意精度误差(n * 0.7 写为 n * 7 / 10)
  3. 注意判断公积金是否超过可贷款金额

#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>using namespace std;int a,b,year,ans1,ans2;double r1,r2;int main(){    while(scanf("%d%d%lf%lf%d",&a,&b,&r1,&r2,&year)!=EOF){        ans1 = a - ( a * 7 / 10);        r1 /= 1200; r2 /= 1200;        int month = year * 12;        double b1 = a - ans1 - b,b2 = b;        if(b1<0) b1 = 0,b2 = a - ans1;        b1 = b1 * 10000 * (r1 * pow(1+r1,month)) / (pow(1+r1,month) - 1);        b2 = b2 * 10000 * (r2 * pow(1+r2,month)) / (pow(1+r2,month) - 1);        printf("%d %d\n",ans1,(int)(b1+b2+0.50000001));    }    return 0;}



原创粉丝点击