1275 两车追及或相遇问题.cpp

来自「威士忌的HDU题解.大概有260多题的源码。对于学习非常有好处。」· C++ 代码 · 共 50 行

CPP
50
字号
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{   int n,m,m1,m2;
    double dis,va,vb,time,dist,t1,t2;
    
    scanf("%d",&n);
    while(n--)
	{   scanf("%lf%lf%lf%d",&dis,&va,&vb,&m);//默认va>=vb 
	    m1=1;m2=1;
	    if(va==vb)	
		{   
			dist=(m*2-1)*dis;
            time=dist/(va+vb);
		}
		else
		{   
			while(m--)
			{   
				t1=dis*m1/(va+vb);
		        t2=dis*m2/(va-vb);
				if(t1<t2)
				{   
					m1+=2;
				    time=t1;
				}
				else if(t1>t2)
				{   
					m2+=2;
				    time=t2;
				}
				else
				{   
					m1+=2;
				    m2+=2;
					time=t1;
				}
			}
		}
		dist=time*va;
        dist=dist-int(dist/dis)*dis;
 		if(dist > dis-dist)
			printf("Time=%.3lf Dist=%.3lf\n",time,dis-dist);
		else
			printf("Time=%.3lf Dist=%.3lf\n",time,dist);
	}
	return 0;
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?