ド素人のメモ帳

解いた問題のプログラムとか載せてくと思います。

AOJ0016

Treasure Hunt

■問題
幾つかの移動歩数と回転角度が与えられます。
座標(0,0)地点で北向きに立っている状態から移動歩数分前に進み、回転角度分右に(負の値なら左)向きます。
それを入力が"0,0"になるまで続けた時の座標の整数部分を答えなさい。


■解法
移動歩数と角度がわかるため三角関数を使うことでxとyの移動距離がわかる。
あとはやるだけ


■ソース

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main(void){
  int w,a,ang=90;
  double x=0,y=0,r;
  while(1){
    scanf("%d,%d",&w,&a);
    if(w==0 && a==0)break;
    r=(double)ang/180.0*M_PI;
    x+=cos(r)*w;
    y+=sin(r)*w;
    ang-=a;
  }
  printf("%d\n%d\n",(int)x,(int)y);
}