AOJ 0076 - Treasure Hunt II
この問題の簡単版である"Treasure Hunt"(AOJ 0016)を解いたのが2011/06/24ですから,1年半でようやく終わったことになります.
感慨深い
法線ベクトルつかって,それを長さ1にして,足し算してと当時よりも道具が増えました.
感慨深い
#include<iostream> #include<cmath> #include<cstdio> struct Vector{ double x, y; }; Vector plus(Vector a, Vector b){ return {a.x+b.x, a.y+b.y}; } Vector times(Vector v, double c){ return {c*v.x, c*v.y}; } Vector getNormalVector(Vector v){ return {-v.y, v.x}; } double distance(Vector v){ return sqrt(v.x*v.x+v.y*v.y); } int main(){ Vector vs[1001]; vs[2] = {1, 1}; for(int i=3;i<1001;i++){ Vector v = vs[i-1], nv = getNormalVector(v); nv = times(nv, 1.0/distance(nv)); vs[i] = plus(v, nv); } int n; while(std::cin >> n, ~n){ printf("%.2f\n%.2f\n", vs[n].x, vs[n].y); } }