一球从h米高度自由落下,每次落地后反弹回原高度的一半再落下,求它在第n次落地时共经过了多少米?第n次反弹多高?
输入小球的初始高度和落地的次数(先输入小球初始高度再输入反弹次数)。
输出小球反弹的高度和经过的距离(先输出反弹的高度再输出经过的距离,中间用空格隔开)。结果保留三位小数,保留方式已经写在预设方法备注中。
100 3
12.500 250.000
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); float h=scanner.nextFloat(); int n =scanner.nextInt(); float sum = -h; for (int i = 1; i <= n; i++) { sum += 2 * h; h /= 2; } System.out.printf("%.3f %.3f", h, sum); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); float h=scanner.nextFloat(); int n =scanner.nextInt(); //write your code here...... float r=h;//r用来记录总路程,现在表示第一次落地时所走的路程 float m=0.f;/*m用来记录第n次落地后所弹的高度, 第n次的路程不记录进总路程*/ for(int i=0;i<n;i++)//迭代n次 { m=h/2;//记录每次(即第i+1次)反弹后的高度 r+=h;//记录总路程 h/=2;//高度更新,每次更新为原来的二分之一 } r-=2*m;//减去第n次反弹后的的路程 System.out.println(String.format("%.3f",m)+" " +String.format("%.3f",r)); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double height = sc.nextDouble(); int count = sc.nextInt(); double lucheng = -height; for (int i = 0; i < count; i++) { lucheng = lucheng + (height * 2); height = height / 2; } System.out.println(String.format("%.3f", height) + " " + String.format("%.3f", lucheng)); } }
//一球从h米高度自由落下,每次落地后反弹回原高度的一半再落下,求它在第n次落地时共经过了多少米?第n次反弹多高? import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); float h = sc.nextFloat(); int n = sc.nextInt(); float result1 = 0 ; float result2 = 0; float tmp = h; for(int i = 1; i <= n;i++) { result1 = h/2; h = result1; if(i != n) { result2 += result1*2; } } System.out.println(String.format("%.3f",result1)+" "+ String.format("%.3f",result2+tmp)); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); float h=scanner.nextFloat(); int n =scanner.nextInt(); //write your code here...... float sum = 0; while(n != 0){ //sum加上下降的高度 sum = sum + h; h = h / 2; //小球高度一半 //求到落地时候,第三次不用加上上升的高度 if(n != 1){ //sum加上上升的高度 sum = sum + h; } n--; //次数减一,控制循环 } //循环结束,h里面放着n次后小球高度,num里面放着经过的距离 //String.format() ,按固定格式输出字符串形式 System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", sum)); //输出格式为:System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", sum)); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); float h=scanner.nextFloat(); int n =scanner.nextInt(); //write your code here...... double sum = 0.0; for(int i=1;i<=n;i++){ sum +=Math.pow(0.5,i-2)*h; } double height = h*Math.pow(0.5,n); System.out.println(String.format("%.3f", height)+" "+String.format("%.3f", sum-h)); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); float h = scanner.nextFloat(); int n = scanner.nextInt(); //write your code here...... float sum = 0; for (int i = 1; i <= n; i++) { sum += i == 1 ? h : 2 * h; h /= 2; } //输出格式为:System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", sum)); System.out.println(String.format("%.3f", h) + " " + String.format("%.3f", sum)); } }
System.out.println(String.format("%.3f", h) + " " + String.format("%.3f", sum));方式二:
System.out.printf("%.3f %.3f\n", h, sum);
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); float h = scanner.nextFloat(); int n = scanner.nextInt(); //write your code here...... float temp = h; float sum = 0; float x = 0; h = (float)(h / Math.pow(2, n)); if (n == 1) { sum = temp; } if (n > 2) { sum=temp; for (int i = 2; i <= n; i++) { x = (float)((temp / Math.pow(2, i - 1)) * 2); sum += x; } } //输出格式为:System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", sum)); System.out.println(String.format("%.3f", h) + " " + String.format("%.3f", sum)); } }