| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1599 人关注过本帖
标题:新手求指点 代码看不出错误
只看楼主 加入收藏
汤姆小猫
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2016-1-9
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:4 
新手求指点 代码看不出错误

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

Input


有多行,每行两个整数N(10 ≤ N ≤ 50), K(6 ≤ K ≤ 30)

Output


对每组数据,如果在20内(包括20年)就能买下这套房子,则输出一个整数M,表示最早需要在第M年能买下,否则输出Impossible,输出需要换行

Sample Input


50 10
40 10
40 8

Sample Output


8
Impossible
10
我的代码
#include <stdio.h>
int main(void)
{
    float n,i;
    float s ,sum,k;
    while(scanf("%f%f",&n,&k)!=EOF)
    {
        s=200;
        sum=0;
        for(i=1;i<=20;i++)
        {
            s=s*(1+k/100);
            sum=sum+n;
            if(sum>=s)
                break;
        }

        if(i<=20)
            printf("%f\n",i);
        else
            printf("Impossible\n");
    }

    return 0;
}
搜索更多相关主题的帖子: 中关村 房价 
2016-01-09 16:56
ms268el8
Rank: 4
等 级:业余侠客
威 望:1
帖 子:84
专家分:299
注 册:2015-11-30
收藏
得分:7 
程序代码:
#include <stdio.h>
int main(void)
{
    int n,i;
    float s,sum,k;
    while(scanf("%d%f",&n,&k)!=EOF)
    {
        s=200;
        sum=n;
        for(i=2;i<=20;i++)
        {
            s=s*(1+k/100);
            sum=sum+n;
            if(sum>=s)
                break;
        }

        if(i<=20)
            printf("%d\n",i);
        else
            printf("Impossible\n");
    }

    return 0;
}

sum=n;
sum初始值應該是n
第一年 s=200, sum=n
for(i=2;i<=20;i++)
i初始值為2
sum和s的初始值已經是第一年的值
所以for迴圈第一次執行      
s=s*(1+k/100);
sum=sum+n;
s和sum其實已經是第二年的值
2016-01-09 19:50
eFun
Rank: 6Rank: 6
等 级:禁止访问
威 望:1
帖 子:58
专家分:400
注 册:2015-12-27
收藏
得分:7 
把s=s*(1+k/100);放到if(sum>=s)break;后面就行了。
2016-01-09 19:58
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:7 
简化的代码(不一定是优化)如下:
程序代码:
#include <stdio.h>
int main(void)
{
    float i,s,n,sum,k;
    while(scanf("%f%f",&n,&k)!=EOF)
    {
        for(i=1,s=200,sum=n;i<=20&&sum<s;i++,sum+=n,s*=(1+k/100));
        if(i<=20)
            printf("%2.0f\n",i);
        else
            printf("Impossible\n");
    }
    return 0;
} 


能编个毛线衣吗?
2016-01-09 20:09
汤姆小猫
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2016-1-9
收藏
得分:0 
谢谢你们
2016-01-09 23:08
快速回复:新手求指点 代码看不出错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018291 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved