0%

买房

买房问题

问题描述

蒜头君从现在开始工作,年薪 N 万。他希望在蒜厂附近买一套 60 平米的房子,现在价格是 200 万。假设房子价格以每年百分之 K 增长,并且蒜头君未来年薪不变,且不吃不喝,不用交税,每年所得 N 万全都积攒起来,问第几年能够买下这套房子?(第一年年薪 N 万,房价 200 万)

Input

一行,包含两个正整数 N (10 ≤N ≤ 50),K (1 ≤ K ≤ 20),中间用单个空格隔开。

Output

如果在第 20 年或者之前就能买下这套房子,则输出一个整数 M,表示最早需要在第 M 年能买下;否则输出"Impossible"。
输出时每行末尾的多余空格,不影响答案正确性

Sample

Input: 
50 10

Output:
8

Limitation

Time limit      1000 ms
Memory limit 32767 kb

解题思路

纯数学题。假设 x 年后可买房,则:

逐年枚举 x 求解就行,注意 float 的细节。

源代码

#include <iostream>
#include <cmath>
using namespace std;

int main() {
int n, k;
while (!(cin >> n >> k).eof()) {
float y = (float) n / 200;
int x = 1;

float z = (float)(powf((float)(1 + k * 0.01), (float)(x - 1))) / x;

while (z >= y) {
x++;
if (x > 20)
break;
z = (float) (powf((float)(1 + k * 0.01), (float)(x - 1))) / x;
}
if (x > 20)
cout << "Impossible" << endl;
else
cout << x << endl;
}

return 0;
}