You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C++生成特定页码序列实现A4双面打印4张A6页面?

生成A4双面打印A6的页码序列(C++实现)

先拆解你给出的页码序列规律:每8个页码为一组,对应一轮打印单元。以第一组(1-8页)为例,序列的生成规则可拆解为:

  • 前4个是组内的奇数页码,按升序排列:1,3,5,7
  • 后4个是组内的偶数页码,但按「第4个偶数、第2个偶数、第8个偶数、第6个偶数」的顺序排列:4,2,8,6

换成通用公式,假设每组的起始页码为start(每组起始为8的倍数+1,比如第1组start=1,第2组start=9,以此类推),每组的8个页码可表示为:

  1. start
  2. start + 2
  3. start + 4
  4. start + 6
  5. start + 3
  6. start + 1
  7. start + 7
  8. start + 5

下面是针对200页文档的C++实现代码,逻辑简单直接,适合快速上手:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    const int total_pages = 200;
    const int group_size = 8; // 每组8个页码
    vector<int> page_sequence;

    // 遍历每个组
    for (int i = 0; i < total_pages / group_size; ++i) {
        int start = i * group_size + 1;
        // 添加组内前4个奇数页码
        page_sequence.push_back(start);
        page_sequence.push_back(start + 2);
        page_sequence.push_back(start + 4);
        page_sequence.push_back(start + 6);
        // 添加组内后4个按规则排列的偶数页码
        page_sequence.push_back(start + 3);
        page_sequence.push_back(start + 1);
        page_sequence.push_back(start + 7);
        page_sequence.push_back(start + 5);
    }

    // 输出序列(逗号分隔)
    for (size_t j = 0; j < page_sequence.size(); ++j) {
        if (j > 0) {
            cout << ",";
        }
        cout << page_sequence[j];
    }
    cout << endl;

    return 0;
}

代码说明

  • 用total_pages固定200,确保刚好分成25个完整组(200/8=25)
  • 每组通过start计算起始页码,然后按规则依次添加8个页码到序列中
  • 最后遍历序列输出,用逗号分隔,方便直接复制使用

如果后续需要处理非8倍数的总页数,只需要在循环后单独处理剩余的页码(你的需求是200页,刚好整除,所以无需额外处理)。

内容的提问来源于stack exchange,提问作者Miki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:05:13