1624 - 买房子
时间限制 : 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"); } } }