牛客网——流浪地球(读题!!!!!!!!!)

链接:https://ac.nowcoder.com/acm/contest/547/B
来源:牛客网
 

在电影《流浪地球》中,人们为了逃离太阳系而选择建造巨大的行星发动机进行加速,

同时在经过木星轨道的时候利用了其引力弹弓效应进行加速。

那什么是引力弹弓效应呢?

李永乐老师专门为此出了一个视频:

点击学习

 

牛客网——流浪地球(读题!!!!!!!!!)

 

 

在学完什么是引力弹弓后,用你刚才所学的知识,来看下面的问题:

 

牛客网——流浪地球(读题!!!!!!!!!)

 

现在有一个超级大球向右运动,速度为X m/s,有n个小球向左运动,速度为Y m/s。

每个小球的质量都远小于其左边的球,同时也远大于其右边的小球。(各个球实际质量特别小,忽略其之间的引力)

且各个球之间的碰撞均为完全弹性碰撞

现在给你一个 X和 Y ,

在不考虑相对论效应的情况下,若要让最右边的小球经过反弹后的速度达到光速的1%(光速 C = 299792458 m/s),

求满足条件的最小的n(0<X+Y<=299792458)。

 

 

输入描述:

第一行一个数N (0<N<200)

表示测试样例的数目

第二行到第N+1行,每行两个数字 X,Y

输出描述:

一个数字,表示小球的数目

示例1

输入

复制

2
1 2
10 20

输出

复制

20
17

备注:

最左边的大球不被算在n内

题目中已经给出公式了,自己不用,活该做不出来

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<vector>
#include<cmath>
const int maxn=1e5+5;
typedef long long ll;
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		double x,y;
	    int sum=0;
	    double tmp=2997924.58;
	    cin>>x>>y;
	    if(y>=tmp)
	        cout<<"0"<<endl;
	    else{
		    while(1){
			    x=x*2+y;//图片中给出的公式 
			    sum++;
			    if(x>=tmp)
			        break;
	        }
		    cout<<sum<<endl;
	    }
	}

	return 0;
}