如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。
URAL/1070
来自"NOCOW"
< URAL
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.