結果
| 問題 |
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;
}
Ysmr_Ry