题解

廖悦扬  •  4个月前


#include <bits/stdc++.h>
#define IOS cin.tie(0);cout.tie(0);ios::sync_with_stdio(false)
#define int long long

using namespace std;
int n, i=2;
int x, y, t=0; // x分子, y分母
int dx[] = {0, 1, 1, -1};
int dy[] = {1, -1, 0, 1};;

int main() {
    IOS
    cin >> n;
    x = 1;
    y = 1;
    while (i<=n) {
        if ((t&1)) {
            while (x+dx[t] >= 1 && y+dy[t] >= 1 && i <= n) { // 单数则一直移动,直到边界
                x -= dx[t];
                y -= dy[t];
                i++;
            }
        } else {  // 偶数则只移一步
            x += dx[t];
            y += dy[t];
            i++;
        }
        t++;
        t %= 4;
    }
    cout << x << "/" << y << '\n';
    return 0;
}

为防止抄题解,代码有坑


评论: