1624 - 买房子

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起来,问第几年能够买下这套房子(第一年房价200万,收入N万)

题目输入

有多行,每行两个整数N(10<=N<=50), K(1<=K<=20)

题目输出

针对每组数据,如果在第20年或者之前就能买下这套房子,则输出一个整数M,表示最早需要在第M年能买下,否则输出Impossible,输出需要换行

输入/输出样例

输入格式

49 8
41 9
44 7

输出格式

6
Impossible
7

C语言解答

int main(int argc, char* argv[])
{int i,n,k;
double sum,sum1;
while(~scanf("%d%d",&n,&k))
{ sum=200;sum1=n;
for(i=0;i<20;i++)
{
	if(sum1>=sum)break;
sum=sum*(1+k*1.0/100);
sum1+=n;

}
if(i>19)printf("Impossible\n");
else printf("%d\n",i+1);

}
	return 0;
}

C++解答

#include <iostream>
using namespace std;

int main()
{
	int N,K;
	while(cin>>N>>K)
	{
		float price = 200;
		float earn  = N;
		int year =1;
		while( earn <price )
		{	//每年一次循环 
			if(year>20)
			{	
				cout<<"Impossible"<<endl;
				break;
			}
			//cout<<"year: "<<year<<"earn:"<<earn<<"price"<<price<<endl;
			earn += N;//总收入增加 
			price = price*(1.0+(float)K/100);//房价增加 
			year++;
		}
		if(year<=20)
			cout<<year<<endl;
	}
	return 0;
}

Java解答

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner shuru = new Scanner(System.in);
        while(shuru.hasNext())
        {
                int N = shuru.nextInt();
                int K = shuru.nextInt();
                int flag = 0;
                for (int i = 0; i<20; i++) {
                    if (N*(i+1) >= 200 * Math.pow(1.0+K/100.0,i)) {
                        System.out.println(i+1);
                        flag = 1;
                        break;
                    }
                }
                if (flag == 0)
                    System.out.printf("Impossible\n");
        }
    }
}