一道简单的百度笔试题

时间:2022-11-05 20:01:28

一、引言

         试着做了一下一道百度笔试题,做着还蛮有意思的,贴出来和大家一起分享一下

二、题目

        懒一回,就不敲了,直接贴截图了,哈哈。

一道简单的百度笔试题

三、我的解法

首先考虑编程语言,我最熟悉的莫过于java,那就用java来编写吧。

我的思路:输入都是成组的,第一个是n,第二个是m,因此可以用这一点做为数据分割的原则。不多说,看代码:

for(int i=1;i<args.length;i+=2){
double n=Double.parseDouble(args[i-1]);
double m=Double.parseDouble((args[i]));
getResult(n, m);
}

获取到了n和m,那就可以考虑算法了 。还是不多说,看代码:

public static void getResult(double n,double m){
double result=0;
while(m--!=0){
result+=n;
n=Math.sqrt(n);
}
System.out.printf("%.2f\n",result);
}
嗯,不错,就是简简单单的几行代码,包含的知识点可真不少。不得不说,考察的基础知识还是蛮多的。

配置运行参数:

一道简单的百度笔试题

运行结果:

94.73
3.41
121.57

四、完整代码

/**
* Project Name:CloudLibrary
* File Name:TestDriver.java
* Package Name:test
* Date:2015年9月16日上午10:04:54
* Copyright (c) 2015, winton_by@126.com All Rights Reserved.
*
*/
package test;

/**
* ClassName: TestDriver date: 2015年9月16日 上午10:04:54
*
* @author winton_by@126.com
* @version v1.0
*/
public class TestDriver {

public static void main(String args[]) {


for (int i = 1; i < args.length; i += 2) {
double n = Double.parseDouble(args[i - 1]);
double m = Double.parseDouble((args[i]));
getResult(n, m);
}

}

public static void getResult(double n, double m) {
double result = 0;
while (m-- != 0) {
result += n;
n = Math.sqrt(n);
}
System.out.printf("%.2f\n", result);
}
}

五、最后说一句

       大家都相处解法了吗?想必也有人有更好的解法吧,希望能指教一下,共同进步,一起成长嘛。