[编程题]抛小球

原创 2015年11月17日 23:08:48

编程题:抛小球

小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推直到全部落到地面不跳,求四个小球一共经历了多少米?(数字都为整数)

给定四个整数A,B,C,D,请返回所求结果。

测试样例:

100,90,80,70

返回:1020


解题要点:以为数字都为整数,所以存在N取偶数还是奇数的问题,如果N是偶数,不会出现差错除以2刚好整除;如果N是奇数,向上取整


第一种方法:递归

package li.gh;

import java.util.Scanner;

public class dsf {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int a = in.nextInt();
		int b = in.nextInt();
		int c = in.nextInt();
		int d = in.nextInt();

		System.out.println(fun(a));
		System.out.println(fun(b));
		System.out.println(fun(c));
		System.out.println(fun(d));
		System.out.println(fun(a) + fun(b) + fun(c) + fun(d));

	}

	public static int fun(int a) {
		if (a == 1)
			return 2;
		else {
			if (a % 2 == 0) {
				// return 1;
				// if(a==0) return 0;
				return fun(a / 2) + a;
			} else {
				return fun((a + 1) / 2) + a;
			}
		}

	}


}


第二种方法

package li.gh;

import java.util.Scanner;

public class dsf {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int a = in.nextInt();
		int b = in.nextInt();
		int c = in.nextInt();
		int d = in.nextInt();

		System.out.println(getDir(a));
		System.out.println(getDir(b));
		System.out.println(getDir(c));
		System.out.println(getDir(d));
		System.out.println(getDir(a) + getDir(b) + getDir(c) + getDir(d));
	}

	public static int getDir(int n) {
		int s = n;
		while (n > 0) {
			if (n % 2 == 0) {
				s += n;
			} else {
				s += ((n + 1) / 2) * 2;
			}
			n /= 2;
		}
		return s;
	}

}



版权声明:本文为博主原创文章,未经博主允许不得转载。

小球的距离(每次弹起的高度为原来的一半)----京东2016研发工程师编程题(二)

[编程题] 小球的距离 小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳...

用java编程来回运动的小球

  • 2009年06月29日 17:05
  • 4KB
  • 下载

Python:pygame游戏编程之旅三(玩家控制的小球)

上一节实现了小球自由移动,本节在上节基础上增加通过方向键控制小球运动,并为游戏增加了背景图片。 一、实现: [python] view plaincopyprint? ...
  • novelly
  • novelly
  • 2013年08月03日 23:36
  • 980

关于Java编程实现n个小球涂色的问题

声明,本文内容为本人原创,可以转载,但请注明出处,否则将追究法律责任,谢谢合作! 把这n个小球排成一线,然后给这n个小球涂色,假设共有三种颜料,要求相邻的小球不能同色,且第一个小球和最后一个小球...

Python:pygame游戏编程之旅二(自由移动的小球)

本节实现一个在窗口中自由运动的小球程序,做了详细注释,不多做解释了。  代码: # -*- coding:utf-8 -*- import sys import pygame from p...
  • dyx1024
  • dyx1024
  • 2012年04月15日 17:09
  • 8764

小球撞墙-GUI编程

  • 2010年08月06日 12:21
  • 3KB
  • 下载

做游戏,学编程(C语言) 1 实现弹跳小球

这次教程,我们实现一个弹跳小球。缺省编译器为VC,需要学习完基础的变量、运算符、表达式,printf、scanf输入输出函数的用法,if-else、while、for语句的用法。 第1步,显示静止的...
  • quhaoye
  • quhaoye
  • 2017年04月30日 16:26
  • 844

Python:pygame游戏编程之旅二(自由移动的小球)

本节实现一个在窗口中自由运动的小球程序,做了详细注释,不多做解释了。  代码: [python] view plaincopyprint? #...
  • novelly
  • novelly
  • 2013年08月03日 23:35
  • 923

五十道编程小题目 --- 10 反弹的小球 java

【程序10】  题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多 少米?第10次反弹多高?  public class BallFlip ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[编程题]抛小球
举报原因:
原因补充:

(最多只允许输入30个字)