[TIOJ] 1120. 分子運動問題
題目連結: http://tioj.infor.org/problems/1120 基本上就是模擬他做的事,不過走過的點記得存下來,然後會有同樣結果的也先記下來,因為它是以6cm/s繞40cm的正方形,所以很容易可知每20秒會循環一次,大概這樣囉 #include <bits/stdc++.h> using namespace std; #define N 20000 struct TsuoBiaw{ int x,y; }; TsuoBiaw arr[N+5]; bitset<N+5> isset; int main(){ int n; while(scanf("%d",&n)!=EOF){ if(isset[n]){ printf("(%d,%d)\n",arr[n].x,arr[n].y); continue; } TsuoBiaw p; p.x=10; p.y=5; bool flag=true; char fanXian=0; p.x+=6*n; while(flag){ switch(fanXian){ case 0: if(p.x>15){ p.y += p.x-15; p.x=15; }else{ flag=false; } break; case 1: if(p.y>15){ p.x -= p.y-15; p.y=15; }else{ flag=false; } break; case 2: if(p.x<5){ p.y -= 5-p.x; p.x=5; }else{ flag=false; } break; case 3: if(p.y<5){ p.x += 5-p.y; p.y=5; }else{ flag=false; } break; }