首页 > 试题广场 >

买房子

[编程题]买房子
  • 热度指数:7570 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
    某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起来,问第几年能够买下这套房子(第一年房价200万,收入N万)

输入描述:
    有多行,每行两个整数N(10<=N<=50), K(1<=K<=20)


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

输入

50 10
40 10
40 8

输出

8
Impossible
10
while True:
    try:
        n,k=map(int,input().strip().split(' '))
        num=22
        for i in range(1,22):
            #print(n*i,200*((k/100+1)**(i-1)))
            if n*i>=200*((k/100+1)**(i-1)):
                num=i
                break
        if num>21:
            print('Impossible')
        else:
            print(num)

    except:
        break
这道题是开发商出的吧。。。。。。
编辑于 2019-08-05 16:47:44 回复(0)

苦逼的程序员

while True:
    try:
        n,k = list(map(int,input().split()))
        years = 1
        while n*years <= 200*(1+k/100)**(years-1) and years<=21:  #注意,第一年不增长
            years += 1
        if years > 21:
            print("Impossible")
        else:
            print(years)
    except Exception:
        break
编辑于 2018-10-03 01:30:36 回复(0)

python solution:

while True:
    try:
        salary,increase=map(int,input().split())
        canBuy=False
        for i in range(1,22):
            if salary*i>=200*(1+increase/100)**(i-1):
                canBuy=i
                break
        print(canBuy if canBuy else "Impossible")

    except:
        break
发表于 2017-10-17 10:32:01 回复(0)
try:
    while 1:
        N, K = map(int, raw_input().strip().split())
        Flag = 0
        for n in xrange(1, 22):
            if N * n >= 200 * (1 + K / 100.0) ** (n - 1):
                Flag = 1
                break
        print n if Flag == 1 else 'Impossible'
except:
    pass

发表于 2016-12-29 16:58:38 回复(0)