石油王の石油掘削日誌

私立高専2年生です。プログラミング初めて半年と少しくらいたちましたが全然できないのでやっぱり時間が足りない気がする。

AOJ0016

最近またAOJやり始めた

最近数学が一段落ついたので英語もあんまりわからないしAOJを始めた。大体20問くらいしか解いてないので競技プログラミングも数学も英語も中途半端なので、とても気色悪いしやり始めようかなって。楽しいし。

AOJ0016宝探しの問題

学校で解いてて5秒くらい考え「あ、よゆうー三角関数やんけー」とか思ってた。しかし何故かx座標をcosで、y座標をsinで求めたのにxとyの値が逆になっていて「ん?」となりフリーズ。少し考えるとこの角度というのが正の数の場合に右回りと書いてあるので常に半周期ずれてるってことに気づいて解決した。

方針としては、移動する点は歩く距離を半径として考えた時の円上の座標だし角度と歩く距離を使って三角関数しようって感じ。C#でやりました。後いっつもsplit忘れる・・・・

ソースコード

using System;

class main
{
static void Main(string[] args)
{
double x=0.0;
double y=0.0;
double angle=0.0;
while (true)
{
var str = Console.ReadLine().Split(',');
var r = int.Parse(str[0]);
var angle_temp= int.Parse(str[1]);
if ((r == 0) && (angle_temp == 0))break;
var rad = angle / 180.0 * Math.PI;
var sin = r * Math.Sin(rad);
var cos = r * Math.Cos(rad);
x += sin;
y += cos; 
angle += angle_temp;
}
Console.WriteLine((int)x);
Console.WriteLine((int)y);
}
}