10 条题解

  • 0
    @ 2024-9-24 11:53:06

    #include <stdio.h>

    int main() {
        int m, N, n, num, den, k;
        scanf("%d", &m); // 读取测试数据组数
    
        for (int i = 0; i < m; i++) {
            scanf("%d", &N); // 读取每组的N值
    
            // 计算分数的位置
            n = 1; // 行数
            k = 0; // 当前编号的索引
    
            while (1) {
                // 当前对角线的元素数量
                k += n;
    
                if (k >= N) {
                    // 找到对应的行和列
                    int position = N - (k - n); // 位置在当前对角线
                    if (n % 2 == 0) {
                        // 偶数行,分母递增,分子递减
                        num = position;
                        den = n + 1 - position;
                    } else {
                        // 奇数行,分子递增,分母递减
                        num = n + 1 - position;
                        den = position;
                    }
                    break;
                }
                n++; // 移动到下一行
            }
            
            // 输出结果
            printf("%d/%d\n", num, den);
        }
    }
    

    信息

    ID
    155
    时间
    3000ms
    内存
    128MiB
    难度
    3
    标签
    (无)
    递交数
    361
    已通过
    191
    上传者