您的位置:首页 > 其它

[洛谷1163]银行贷款

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

输入

输入文件仅一行包含三个用空格隔开的正整数。

第一个整数表示贷款的原值,第二个整数表示每月支付的分期付款金额,第三个整数表示分期付款还清贷款所需的总月数。

输出

输出文件应该是一个实数,表示该贷款的月利率(用百分数表示),四舍五入精确到0.1%。

样例

LOAN.IN

1000 100 12

LOAN.OUT

2.9

思路

  二分答案。因为是利滚利的缘故,不能直接套用公式,可解。

var m,y,mouth,jg,i,minn:longint;
s:string;
min,ans:real;

function js(mid:longint):real;
var mid1,n:real;
i:longint;
begin
n:=m;
mid1:=mid/10000;
for i:=1 to mouth do
n:=n*(1+mid1)-y;
exit(n);
end;

function ef(l,r:longint):longint;
var mid:longint;
zhi:real;
begin
while l<r do
begin
mid:=(l+r) div 2;
zhi:=js(mid);
if (abs(zhi)<min) or (minn=-1) then
begin
min:=abs(zhi);
minn:=mid;
end;
if zhi>0 then r:=mid;
if zhi<0 then l:=mid+1;
if zhi=0 then exit(mid);
end;
exit(l);
end;

begin
minn:=-1;
read(m,y,mouth);
jg:=ef(0,trunc((y/m)*10000));
ans:=jg/100;
writeln(ans:0:1);
end.


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: