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;
}