概要
石が動いていく、動くと止まったときに音が鳴る こどふぉのサイト見てください
回答
たぶん123779回鳴る回答です。通りました
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.v ^<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< v.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>^
を25ループ,開始地点は(1,1)
このループは、2列*2で成り立ってて、2列目と3列目の間についてほぼ鏡写しのようになっています
1列目と2列目でぐるぐる回ります。
3列目と4列目でぐるぐる回ります。
5列目と6列目でぐるぐr
検証用プログラム
#include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <typeinfo> #include <queue> using namespace std; typedef long long ll; typedef pair<int, int> P; typedef pair<P, int> Q; const int N = 100; int main(int argc, char *argv[]) { char b[N+1][N+1]; for (int i = 0; i < 100; i++) { cin >> b[i]; } cout << "OK" << endl; int x, y; cin >> x >> y; x--; y--; int result = 0; int c; for (c = 0; c < 1e7; c++) { bool flag = false; int i; switch (b[x][y]) { case 'v': for (i = x+1; i < N; i++) { if (b[i][y] != '.') { flag = true; break; } } if (flag) { if (i-x>1) result++; b[x][y] = '.'; b[i-1][y] = 'v'; x = i; } break; case '>': for (i = y+1; i < N; i++) { if (b[x][i] != '.') { flag = true; break; } } if (flag) { if (i-y>1) result++; b[x][y] = '.'; b[x][i-1] = '>'; y = i; } break; case '^': for (i = x-1; i >= 0; i--) { if (b[i][y] != '.') { flag = true; break; } } if (flag) { if (x-i>1) result++; b[x][y] = '.'; b[i+1][y] = '^'; x = i; } break; case '<': for (i = y-1; i >= 0; i--) { if (b[x][i] != '.') { flag = true; break; } } if (flag) { if (y-i>1) result++; b[x][y] = '.'; b[x][i+1] = '<'; y = i; } break; } if (!flag) { break; } } printf("%d %d\n", result, c); return 0; }