p2010_公式计算.cpp

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· C++ 代码 · 共 36 行

CPP
36
字号
#include <stdio.h>
#include <math.h>
#define  pi      acos ( -1 )
#include <algorithm>

using namespace std;

bool  TryPut ( int a , int b , int x , int y )
{
      double l = sqrt ( (double)x * x + y * y ) , alfa1 , alfa2 , l2;
      if ( l <= b ) alfa1 = 0; else alfa1 = acos ( b / l );
      alfa2 = atan ( (double)y / x ) + alfa1;
      if ( alfa2 > pi / 2 ) return false;
      l2 = x * sin ( alfa2 ) + y * cos ( alfa2 );
      return l2 < a + 1e-10;
}

bool  check ( int A , int B , int X , int Y )
{
      if ( A >= X && B >= Y ) return true;
      if ( A < X && B < Y ) return false;
      return  TryPut ( A , B , X , Y );
}

main ()
{
     int Total , A , B , X , Y;
     for ( scanf ( "%d" , &Total ); Total; Total -- ) {
         scanf ( "%d%d%d%d" , &A , &B , &X , &Y );
         if ( A < B ) swap ( A , B );
         if ( X < Y ) swap ( X , Y );
         if ( check ( A , B , X , Y ) ) printf ( "Escape is possible.\n" );
            else printf ( "Box cannot be dropped.\n" );
     }
}

⌨️ 快捷键说明

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