ECNU 3081 购房还款

ECNU 3081 购房还款

链接

https://acm.ecnu.edu.cn/problem/3081

题目

单点时限: 2.0 sec

内存限制: 256 MB

购房者从银行贷了一笔款 d,已知每月还款额为 p,月利率为 r。请编写程序计算需要几个月才能还清贷款。例如:d=300000,p=6000,r=1%, 则需 70 个月还清。

输入三个整数 d,p 和 r,三个整数之间用空格分隔。上述例子的输入为:300000 6000 1

在一行中输出需要还清的月数 (四舍五入到整数)。

Hint:还清月数 m 的计算公式如下:

公式中的 log(x) 表示 log10(x),以 10 为底的对数。C 语言的标准库函数中有计算以 10 为底的对数的函数 log10()。

Note:

(1)、调用库函数 log10(),在程序开头加上一行 : #include < 对应头文件 >

(2)、 库函数 log10() 的用法请参考教材 P251。

输入格式
在一行中输入用空格分隔的三个整数。

输出格式
在一行中输出需要还清的月数 (四舍五入到整数)。注意:需要换行。

样例
input
300000 6000 1
output
70

思路

直接对于函数进行处理就行了,需要注意的是,这里的r是百分比,应该乘0.01,此外,最后结果要四舍五入,这里采用round即可。

代码

  public static void fun() {
    Scanner sc = new Scanner(System.in);
    double d = sc.nextDouble();
    double p = sc.nextDouble();
    double r = sc.nextDouble();
    double ans = Math.log10(p / (p - d * r * 0.01)) / Math.log10(1 + r * 0.01);
    System.out.println(Math.round(ans));
  }
posted @ 2021-01-17 18:30  cheng102e  阅读(93)  评论(0编辑  收藏  举报