OpenJudge计算概论-买房子

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

输入
有多行,每行两个整数N(10 <= N <= 50), K(1 <= K <= 20)
输出
针对每组数据,如果在第20年或者之前就能买下这套房子,则输出一个整数M,表示最早需要在第M年能买下,否则输出Impossible,输出需要换行
样例输入
50 10
40 10
40 8
样例输出
8
Impossible
10


注意:k、累积存款和每一年的房价要用浮点型数据。累计存款可以不用浮点型数据也可以。  ===================================================================
*/ #include<stdio.h> int main() { int N; double k; int i;//年数 int a,b;//a是累积的存款,b是当前房价。 while(scanf("%d%d",&N,&k)!=EOF) { i=1; k=k/100; a=N; b=200; while(a<b&&i<=20) { i++; a=a+N; b=b*(1+k); } if(i<=20) { cout<<i<<endl; } else { cout<<"Impossible"<<endl; } } return 0; }




#include<stdio.h>
int main()
{
    int N;
    double k;
    int i;//年数
    double a,b;//a是累积的存款,b是当前房价。注意,这个地方要用浮点型数据 
    int f;
    freopen("4.in","r",stdin);
    while(scanf("%d%lf",&N,&k)!=EOF)
    {
        k=k/100;
        i=1;
        a=N;
        b=200;
        
        if(a>=b)
        {
            printf("1
");
            continue;
        }
        f=1;
        for(i=2;i<21;i++)
        {
            a=a+N;
            b=b*(1+k);
            if(a>=b)
            {
                printf("%d
",i);
                f=0;
                break;
            }
        }
        if(f==1)
        {
            printf("Impossible
");
        }
        
        
        /*while(a<b&&i<=20)
        {
            i++;
            a=a+N;
            b=b*(1+k);
        }
        if(i<=20)
        {
            printf("%d
",i);
        }
        else
        {
            printf("Impossible
");
        }*/
    }
     
    return 0;
}
原文地址:https://www.cnblogs.com/huashanqingzhu/p/3448700.html