結果
| 問題 | No.61 リベリオン | 
| コンテスト | |
| ユーザー |  Ysmr_Ry | 
| 提出日時 | 2014-11-29 15:00:03 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                CE
                                 
                            (最新) 
                                AC
                                 
                            (最初) | 
| 実行時間 | - | 
| コード長 | 1,232 bytes | 
| コンパイル時間 | 1,895 ms | 
| コンパイル使用メモリ | 28,724 KB | 
| 最終ジャッジ日時 | 2024-11-14 18:57:25 | 
| 合計ジャッジ時間 | 2,496 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge2 | 
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
            
            
            
            
            ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:57:54: error: ‘ceil’ was not declared in this scope
   57 |                         int k = std::max( 2*W*b?(int)ceil((Hx-xs-2*W*c*alpha)/(2.0*W*b)):0, 2*H*a?(int)ceil((Hy-ys+2.0*H*c*beta)/(2.0*H*a)):0 );
      |                                                      ^~~~
main.cpp:27:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   27 |         scanf( "%d", &Q );
      |         ~~~~~^~~~~~~~~~~~
main.cpp:31:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   31 |                 scanf( "%d%d%d%d%d%d%d%d%d", &W, &H, &D, &Mx, &My, &Hx, &Hy, &Vx, &Vy );
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            
            ソースコード
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define rep(i,a) for(int i=0;i<(a);++i)
int gcd( int a, int b )
{ return b?gcd(b,a%b):a; }
int extgcd( int a, int b, int &x, int &y )
{
	int d = a;
	if( b )
	{
		d = extgcd( b, a%b, y, x );
		y -= a/b*x;
	}
	else
		x = 1, y = 0;
	return d;
}
int main()
{
	int Q;
	scanf( "%d", &Q );
	while( Q-- )
	{
		int W, H, D, Mx, My, Hx, Hy, Vx, Vy;
		scanf( "%d%d%d%d%d%d%d%d%d", &W, &H, &D, &Mx, &My, &Hx, &Hy, &Vx, &Vy );
		
		while( Vx < 0 || Vy < 0 )
		{
			int t;
			std::swap(W,H);
			t=Mx, Mx=-My, My=t;
			t=Hx, Hx=-Hy, Hy=t;
			t=Vx, Vx=-Vy, Vy=t;
		}
		bool fl = false;
		
		rep( i, 4 )
		{
			int xs = i&1?Mx+2*(W-Mx):Mx, ys = i>=2?My+2*(H-My):My;
			int a = 2*W*Vy, b = 2*H*Vx, c = Vx*(ys-Hy)-Vy*(xs-Hx);
			int g = gcd(a,b);
			if( c % g )
				continue;
			a /= g, b /= g; c /= g;
			int alpha, beta;
			extgcd( a, b, alpha, beta );
			int k = std::max( 2*W*b?(int)ceil((Hx-xs-2*W*c*alpha)/(2.0*W*b)):0, 2*H*a?(int)ceil((Hy-ys+2.0*H*c*beta)/(2.0*H*a)):0 );
			if( (Vx?(xs+2*W*(b*k+c*alpha))/Vx:(ys+2*H*(a*k-c*beta))/Vy) <= D )
			{ fl = true; break; }
		}
		puts( fl?"Hit":"Miss" );
	}
	return 0;
}
            
            
            
        