AOJ 0135 - Clock Short hand and Long Hand
正答率28.2%だが,簡単でしょww.すいません嘘でした.
まず,長針と短針の角度計算を間違えていた.
長針は時間の影響も受けることを忘れていました.
次の問題は,長針は30 * H(hour) + 0.5 * M(min)ではないことです.
これは,各々で計算しているために誤差が出るのかなと思い(60 * H + M)/2としました.
最後に,H,Mがint型だったために,aH,aMがint型になってしまい少数が考慮されないという問題です.
これらを考慮してコードを書きました.
#include <iostream> #include <cstdio> #include <math.h> int main(){ //Input int N; std::cin >> N; double H, M; while(N--){ scanf("%lf:%lf",&H,&M); //Processing //角度を求める double aH = (60 * H + M) / 2, aM = 6 * M, a; //std::cout << aH << "," << aM << std::endl; a = std::min(fabs(aH-aM), 360-fabs(aH-aM)); //危険さを判定 std::string res; if(a < 30){ res = "alert\n"; } else if(a >= 90){ res = "safe\n"; } else{ res = "warning\n"; } std::cout << res; } }