zoukankan      html  css  js  c++  java
  • LA 6448 Credit Card Payment

     

     

    【题目】

    你的信用卡目前欠M元,每月的汇率是R,每月的利息要四舍五入为小数点后两位,你每月还B元,问多少月能还清。

    输入

    先是T代表测试数据组数

    接下来T行,每行有三个实数,R,M,B每个实数小数点后有两位

    输出

    每组测试数据输出一行,还清债务的最小月数,如果超过1200月都不能还清,输出“impossible

     

    【吐槽】

    这道题过的好不容易,首先是读题,如果不了解那些银行业的词汇真读不懂题

    比如interesting(利息),the outstanding balance(未付清的余额),payment(题目的意思应该是还款还多少月)。最难懂得是那个四舍五入:rounding up 0.5 cent and above,意思是0.5~1分向上取整。因为没有读懂最后那个,WA了无数次。。捂脸

     

    【题解】

    题目明确了还是很好算的,只需while一直循环就好了,只需注意一点,也是很多同学一直过不去的,就是浮点误差,0.005要约为0.01,但因为浮点误差所以有时候是0.00499999这时候也需要约为0.01,而不是0.00

     

    【代码】

    RunID

    User

    Problem

    Result

    Memory

    Time

    Language

    Length

    Submit Time

    2549916

    zhyfzy

    E

    Accepted

    0 KB

    33 ms

    C++ 4.5.3

    707 B

    2014-07-31 16:36:07



    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #define eps 0.000001//规定浮点误差范围,一般取这个数就可以了
    using namespace std;
    int i,j,k,n,x,y,T,ans;
    double r,m,b;
    double rou(double t)
    {
    	double x=t*100;
    	double y=round(x);
    	if (fabs(x-y)<eps) return t;
    	x=(int)(x+0.5+eps);
    	x=x/100;
    	return x;
    }
    int main()
    {
    	scanf("%d",&T);
    	while (T--)
    	{
    		scanf("%lf%lf%lf",&r,&m,&b);
    		ans=0;
    		while (m>eps)
    		{
    			ans++;
    			if (ans>1200) break;
    			m=m+rou(r*m*0.01);
    			m-=b;
    		}
    		if (ans>1200) printf("impossible
    ");
    		else printf("%d
    ",ans);
    	}
    	
    }



  • 相关阅读:
    龙小树|第一篇博客随笔
    机器学习相关网址
    希腊字母表
    博客园美化
    论文检索常用网站
    这些年,我用过的良心网站,分享给大家
    MATLAB小函数:展示灰度图像数据集的部分样例
    基于图嵌入的高斯混合变分自编码器的深度聚类(Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedding, DGG)
    MATLAB实例:二维散点图
    MATLAB实例:多元函数拟合(线性与非线性)
  • 原文地址:https://www.cnblogs.com/zhyfzy/p/4021319.html
Copyright © 2011-2022 走看看