如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。

URAL/1070

来自"NOCOW"

跳转到: 导航, 搜索

a1时在a地起飞,b1时在b地降落,b2时在b第起飞,a2时在a地降落,考虑a1与b1的时间差,b2与a2的时间差,记为t1、t2,t1与t2的差距有a、b两地的时差造成,由于实际用时不变,所以设时差为k,那么t1-k=t2+k,于是时差k应该为这两个时间差的绝对值的1/2。

#include<iostream>
using namespace std;
float min(float a,float b,float c)
{
    float t=9999999;
    if ((a<t)&&(abs(a)<11)) t=a;
    if ((b<t)&&(abs(b)<11)) t=b;
    if ((c<t)&&(abs(c)<11)) t=c;
    return t;
}    
int deal(float x)
{
    if (x+0.5>=(int)x) return((int)x+1);
    return((int)x);
}    
int main(void)
{
    float a,b,x,x1,x2;
    cin>>a>>b;
    x1=min(a-b,a-b-24,a+24-b);
    cin>>a>>b;
    x2=min(a-b,a-b-24,a+24-b);
    x=abs(x1-x2);
    x=deal(x);
    cout<<(int)x/2;
    return 0;
}    
 
by churchill

yuanyuan's solution:

program p1070;
var
  s:string;
  a,b,x1,x2:real;
  ans:integer;
begin
  readln(s);
  val(copy(s,1,pos(' ',s)-1),a);val(copy(s,pos(' ',s)+1,length(s)-pos(' ',s)),b);
  x1:=b-a;
  if x1<0 then x1:=x1+24;
  readln(s);
  val(copy(s,1,pos(' ',s)-1),a);val(copy(s,pos(' ',s)+1,length(s)-pos(' ',s)),b);
  x2:=b-a;
  if x2<0 then x2:=x2+24;
  ans:=round(abs(x1-x2)) shr 1;
  if ans>6 then ans:=12-ans;//关键 
  writeln(ans);
end.
个人工具