免费做网站的app,深圳荷坳网站建设公司,怎样看网站建设制作方,东莞太子酒店P1163 银行贷款
P1163 银行贷款
题意 1.从银行贷款后#xff0c;在一段时间内每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。 2.三个用空格隔开的正整数。第一个整数表示贷款的原值n#xff0c;第二个整数表示每月支付的分期付款金…P1163 银行贷款
P1163 银行贷款
题意 1.从银行贷款后在一段时间内每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。 2.三个用空格隔开的正整数。第一个整数表示贷款的原值n第二个整数表示每月支付的分期付款金额 m第三个整数表示分期付款还清贷款所需的总月数t。 思路 先判断题目用什么知识点例这题二分。理解题意将实例演示出来。注意细节将实例带到所写的代码中看看能不能实现。 坑点 数据保证答案不超过300.0%给l,r定义范围。钱多钱少与在二分中间值的左边还是右边要搞搞清楚。ans0还有钱没还清利润小了往右边找。ans0多还钱了利润大了所有往左找。 算法一浮点二分
时间复杂度
输出大小: 1.90697479248047 MiB 编译时间: 1.14s
实现步骤 首先定义函数函数里面用二分模版解答n贷款m分期付款t月数根据题目在理解题目意思的前提下用二分法将题意表达出来。最后在主函数中应用所定义的函数。 代码 #include iostream
#include cstdio
using namespace std;
double n,m,t;//n贷款m分期付款t月数
//double h;
double find(double l,double r){double mid(lr)/2;//表示一开始的利润 double ansn;//ans为剩下的钱 for(int i1;it;i){ansans*(1mid)-m;}if(ans0||r-l0.000001){//保证精准度足够 return mid;}if(ans0){//还有钱没还清利润小了 ,往右边找 return find(l,mid); //相当于rmid}if(ans0){//多还钱了利润大了所有往左找 return find(mid,r);//相当于lmid }
}
int main(){
// cinnmt;scanf(%lf%lf%lf,n,m,t);double hfind(0,5);//数据保证答案不超过300.0%//给l,r定义范围printf(%.1lf,h*100);return 0;
}
总结 浮点二分和二分一样都要先定义一个函数再在主函数里运用函数说白了唯一不同的就是数值是一个是浮点型一个是整型