openjudge noi 买房子

题目链接:http://noi.openjudge.cn/ch0105/16/

总时间限制: 1000ms 内存限制: 65536kB
描述

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

输入
一行,包含两个正整数N(10 <= N <= 50), K(1 <= K <= 20),中间用单个空格隔开。
输出
如果在第20年或者之前就能买下这套房子,则输出一个整数M,表示最早需要在第M年能买下,否则输出Impossible。
样例输入
50 10
样例输出
8

正解:

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int N,kk;
 5     double k;
 6     int i;//年数
 7     double a,b;//a是累积的存款,b是当前房价。
 8      
 9     scanf("%d%d",&N,&kk);
10     k=kk/100.0;
11     i=1;a=N;b=200;
12     while(a<b&&i<=20)
13     {
14         i++;
15         a=a+N;     //第i年的时候累计的存款 
16         b=b*(1+k); //第i年的时候的房价 
17     }
18     if(i<=20)
19     {    printf("%d\n",i);    }
20        else
21     {   printf("Impossible\n");  }
22     return 0;
23 }
View Code
复制代码

另类的解法,效率比较低:

复制代码
 1 #include <stdio.h>
 2 #include <math.h>
 3 int main(int argc, char *argv[])
 4 {
 5     int N,K,i,a,s=0;
 6     double b,w,kk;
 7     scanf("%d %d",&N,&K);
 8     
 9     kk=1+K/100.0;
10     for(i=1;i<=20;i++)
11     {
12         s=s+N;
13         b=pow(kk,i-1);
14         w=b*200;
15         if(s>w)break;
16     }
17     if(i>20) printf("Impossible");
18     else printf("%d",i);
19     return 0;
20 }
View Code
复制代码

 

posted on   华山青竹  阅读(1691)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示