一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?
数据范围:
一行,一个整数n (1<=n<=10)。
输出两个浮点数ans1,ans2。ans1为第n次落地时,共经过的距离;ans2为第n次反弹的高度。答案应与标准答案误差小于1e-5。两个数间以空格相间。
1
100.000000 50.000000
10
299.609375 0.097656
import java.util.Scanner; public class Main{ public static void main(String[] src){ float high = 100.0f; float sum = 0.0f; Scanner scan = new Scanner(System.in); if(scan.hasNextInt()){ int time = scan.nextInt(); sum = 100; high = 50; for(int i = 1; i < time; i++){ sum += (high * 2); high = high / 2; } System.out.println(sum + " " + high); } } }
n = int(input()) d = 100 * (3 - 0.5 ** (n - 2)) h = 100 * 0.5 ** n print(d, h)
const readline = require('readline') const rl = readline.createInterface({ input: process.stdin, ouput: process.stdout }) let inArr = [] rl.on('line', line=>{ if(!line) return inArr.push(line.trim()) if(inArr.length === 1){ let n = +inArr[0] let h =100 let f =200 let sum = 100 for(let i =1;i<n;i++){ sum += f/2 f = f/2 } for(let i =0;i<n;i++){ h = h/2 } console.log(sum.toFixed(6)) console.log(h.toFixed(6)) } })
#include <iostream> using namespace std; int main(){ int n; while(cin>>n){ float ans1=100, ans2=0, h=100; for(int i=1; i<=n; i++){ ans1 = ans1 + ans2*2; ans2 = h/2; h /= 2; } cout.setf(ios::fixed); cout.precision(6); cout.setf(ios::right); cout << ans1 << " " << ans2; } return 0; }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int a = in.nextInt(); float ansSum = 100f; float ansHeight = 50f; for(int i = 1; i < a; i++){ ansSum += ansHeight * 2f; ansHeight = ansHeight / 2f; } System.out.printf("%.6f %.6f",ansSum,ansHeight); } }
) func main(){ fmt.Println("请输入一个数") var n int fmt.Scanf("%v",&n) Conclute(n) } func Conclute(n int ){ var ans1,ans2 float32 ans1,ans2 = 100,50 if n == 1{ fmt.Println(ans1,ans2) return }else{ for i := 1;i<n;i++{ ans1 += 2*ans2 ans2 = ans2/2 } } fmt.Printf("%v %v",ans1,ans2) } // Golang,精度有问题ans2老是多两位不太会调等我研究下
#include <iostream> #include <iomanip> using namespace std; int main() { int n; cin >> n; double sum = 100; double len = 50; for(int i = n; i > 1; i--) { sum += len*2; len = len/2; } cout << fixed << setprecision(6) << sum << " " << len << endl; return 0; }
这个精度emmm我也是醉啦
using System; class A { static void Main() { int n = int.Parse(Console.ReadLine()); double height = 100.0; double ans1 = 0.0; double ans2 = height; for(int i = 0;i<n;i++) { ans1 += ans2; ans2 = ans2/2.0; if(i != n-1) { ans1 +=ans2; } } Console.WriteLine($"{ans1} {ans2}"); } }float精度不够
var a=readline(); var val=0.5; var data=[]; var sum=0; var count=0; if(a-1>0 && a!=2){ for(var i=1;i < a-1;i++){ val=val*0.5; var z=100*val; data.push(z); }; for(var j=0;j<data.length;j++){ sum+=data[j]; }; count=sum*2+100+100; }else if(a==2){ z=100*0.5; count=z*2+100; }else{ z=100; count=100; }; print(count,z*0.5);
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s=new Scanner(System.in); int a = s.nextInt(); float sum=0; float total=0; float high=100; for(int j=1;j<=a;j++) { if (j == 1) { total = total + high; high = high / 2; } else { total = total + 2*high; high = high / 2; sum = sum + total; } } java.text.DecimalFormat df = new java.text.DecimalFormat(".000000"); System.out.println(df.format(total)); // System.out.println("sum"+sum); System.out.println(df.format(high)); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { //输入 int n; for(;;) { Scanner input = new Scanner(System.in); n = input.nextInt(); float h =100; float ans1=100; float ans2=0; for(int i=0;i<n;i++){ h =h / 2; ans1 = ans1+2 * h; } ans2 = h; ans1 = ans1 - 2*h; System.out.printf("%.6f,%.6f",ans1,ans2); } } }
#include <iostream> (720)#include <iomanip> using namespace std; int main(){ int n=0; double ans1=0.0,ans2=0.0; cin>>n; double height=100.0; for(int i=0;i<n;i++){ ans1+=height*2; height/=2; ans2=height; } cout<<setiosflags(ios::fixed)<<setprecision(6)<<ans1-100<<" "<<ans2; system("pause"); return 0; }