OpenJudge 计算概论(A) / B04 基础练习题(4)3:买房子

3:买房子
总时间限制:1000ms内存限制:65536kB
描述
某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起来,问第几年能够买下这套房子?(第一年年薪N万,房价200万)
输入
一行,包含两个正整数N(10 <= N <= 50), K(1 <= K <= 20),中间用单个空格隔开。
输出
如果在第20年或者之前就能买下这套房子,则输出一个整数M,表示最早需要在第M年能买下,否则输出Impossible。
样例输入

50 10

样例输出

8

这道题就是个数学题,结果wrong answer了好多次,以至于我又开始怀疑自己是不是数学差到破天荒了。看了一下别人写的代码。然后各种试错,发现输入的数据需要是浮点型的。题目中也没说明白,简直!!!

自己写的代码真的像小学生算数,一步一步往前走。。。,别人的和自己的区别就在算下一年房价那里。如果按照我自己的那种计算方式,根本不需要double型啊,但是就一直wrong answer,如果哪位大神能解释为啥,请评论,小的感激不尽!

代码

//自己的:

#include<iostream>
using namespace std;
int main()
{
    double salary,K,price=200; ;   // 年薪,房价每年的增长率
    while(cin>>salary>>K)
    {
    int i=1; //这里是从第二年开始就不行,必须得有下面的i>1的判断
    for(; i<=20; i++)
    {
        if(i>1)
            price+=price*K/100;//每年价格的增长是在上一年的基础上,对于0.0几这种百分比的数,可以先计算出来,再除以100
        if(salary*i>=price)
        {
            cout<<i<<endl;
            break;
        }
    }
    if(i>20)
        cout<<"Impossible"<<endl;
    }
    return 0;
}

//看了别人的:
#include<iostream>
using namespace std;
int main()
{
    double salary,K,price=200;   // 年薪,房价每年的增长率
    cin>>salary>>K;  //只输入一组数据,不是输入多组数据也可以
//    while(cin>>salary>>K)
//    {
    int i;
    for(i=1; i<=20; i++)
    {
        if(i>1)
            price*=1+K/100.0;
        if(salary*i>=price)
        {
            cout<<i<<endl;
            break;
        }
    }
    if(i>20)
        cout<<"Impossible"<<endl;
//    }
    return 0;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值