Google笔试的一道选择题,北京一套房子200W,每年涨价幅度10%,某程序员年薪40W,请问,该程序员不吃不喝多少年后可以有自己的房子?
选项:A:5年B:7年 C:8年D:9年E:到死都没房。 
 
var housingPrice = 200; // 当前房价,单位W
var raises = 0.1; // 每年涨幅
var annualSalary = 40; // 年薪,单位W
var savings = 0; // 存款
var year = 0; // 第几年
var html = [];
while(savings < housingPrice && // 存款不够买房
housingPrice * raises <= annualSalary) { // 年薪已经没有房价涨得快了
year++; // 一年过去了
savings += annualSalary; // 存款增加
housingPrice += housingPrice * raises; // 房价增加
html.push(["第", year, "年",
" 房价:", housingPrice.toFixed(2), 
" 存款:", savings, 
" 来年房价增长:", (housingPrice * raises).toFixed(2)].join(""));
}
if (housingPrice * raises > annualSalary) {
html.push("结论:死了都买不起。");
} else {
html.push(["结论:", year, "年。"].join(""));
}
document.open();
document.write(html.join("<br/>"));
document.close();第1年 房价:220.00 存款:40 来年房价增长:22.00
第2年 房价:242.00 存款:80 来年房价增长:24.20
第3年 房价:266.20 存款:120 来年房价增长:26.62
第4年 房价:292.82 存款:160 来年房价增长:29.28
第5年 房价:322.10 存款:200 来年房价增长:32.21
第6年 房价:354.31 存款:240 来年房价增长:35.43
第7年 房价:389.74 存款:280 来年房价增长:38.97
第8年 房价:428.72 存款:320 来年房价增长:42.87
结论:死了都买不起。第一感觉就是死都买不起,今天看到的写个程序验证一下,果然。

解决方案 »

  1.   

    //北京一套房子200W,每年涨价幅度10%,某程序员年薪40W,请问,该程序员不吃不喝多少年后可以有自己的房子?var fj = 2000000, nx = 400000, n = 0, b = true;
    while(b){
    ++n;
    fj = parseInt(fj * 1.1);
    if(nx * n >= fj)b = false;
    }
    alert(n);//365年答案E
      

  2.   

    明显是个死循环,365从何而来?你这个代码明显是错误的。因为使用了parseInt,但碰到科学计数法的时候就转化错了。parseInt(1.0884923673180082e+21); // == 1
      

  3.   


    declare @table table (时间 varchar(5),房价 float,存款 int,来年房价增长 float)
    insert into @table
    select '第1年',220.00,40,22.00 union all
    select '第2年',242.00,80,24.20 union all
    select '第3年',266.20,120,26.62 union all
    select '第4年',292.82,160,29.28 union all
    select '第5年',322.10,200,32.21 union all
    select '第6年',354.31,240,35.43 union all
    select '第7年',389.74,280,38.97 union all
    select '第8年',428.72,320,42.87select 时间,房价,房价*0.4 AS 首付款,存款,来年房价增长 from @table/*
    时间    房价                     首付款                    存款          来年房价增长
    ----- ---------------------- ---------------------- ----------- ----------------------
    第1年   220                    88                     40          22
    第2年   242                    96.8                   80          24.2
    第3年   266.2                  106.48                 120         26.62
    第4年   292.82                 117.128                160         29.28
    第5年   322.1                  128.84                 200         32.21
    第6年   354.31                 141.724                240         35.43
    第7年   389.74                 155.896                280         38.97
    第8年   428.72                 171.488                320         42.87
    */--首付按40%算的话,第三年就可以付首付了。
      

  4.   

    (1 + 10%)^n ----几何级的40w * n     ----算数级的
      

  5.   

    看此链接
    http://topic.csdn.net/u/20100928/13/8e4e268b-7728-4b00-b1b1-cbe370681190.html
      

  6.   

    看来和谐google是正确的,笔试题出的都这么不和谐
      

  7.   

    初级菜鸟程序员的结论public class Test {
        
    public static void main(String[] args)
    {
    double f=200;  //最初房价
    int n=40;      //年薪
    int year=0;    //第几年
    double z= 0.1; //房价涨幅
    int nx=0;
    s(f,n,year,z,nx);
    }


    public static void s(double f,int n,int year,double z,int nx)
    {
    if(year>100)
    {
    System.out.println("结论:到死都没房");

    }else{
    if(f==nx)
    {
    System.out.println("结论:不吃不喝到第"+year+"年能买的起房");
    return;
    }
    else
    {
    f=f*z+f;
    nx=nx+n;
    year++;
    System.out.println("第"+year+"年");
    System.out.println("房价="+f+"W");
    System.out.println("总存款="+nx+"W");
    s(f,n,year,z,nx);
    }
    }

    }
    }
    第98年
    房价=2277787.1636069855W
    总存款=3920W
    第99年
    房价=2505565.879967684W
    总存款=3960W
    第100年
    房价=2756122.467964452W
    总存款=4000W
    第101年
    房价=3031734.7147608977W
    总存款=4040W
    结论:到死都没房
      

  8.   


    果然是菜鸟程序员,回复完了才发现内容都放 code 外面去了 ⊙﹏⊙b汗
      

  9.   

    1.1 ^ (n - 1) = 0.2n化简: 
    (11 / 10) ^ (n - 1) = n / 5
    (11 ^ (n - 1)) / (10 ^ (n - 1)) = n / 5
    11 ^ (n - 1) = (n / 5) * (10 ^ (n - 1))
    5 * (11 ^ (n - 1)) = n * (10 ^ (n - 1))