1 条题解

  • 0
    @ 2026-10-26 13:00:02

    思路与算法

    原题输入直接是一行整数,没有开头的个数。读到EOF为止,将每个整数的十进制文本依次放入数组,再从最后一项向第一项输出。使用文本保存整数,既不需要数值运算,也不会擅自限制原题未给出的数值位数。

    正确性说明

    读入后第i个数组元素就是第i个输入数的原始十进制表示。逆向遍历依次输出第n项、第n-1项,直至第1项,因此与输入顺序正好相反,且每项只出现一次。所有数据项都读到EOF,不会把首项误当作数量丢弃。

    复杂度

    设共有n≤100个数、输入十进制文本总长为B。读入、复制和输出总时间O(B+n),存储所有文本O(B+n)。空数组初始化O(1),动态数组扩容的摊还开销包含在内。

    易错点

    与常见“先给n再给数组”的题协议不同,不能先cin>>n。负号属于数值文本的一部分,逆序的是元素而不是每个数字的字符。输出元素之间一个空格,最后换行。库内P0308只接受1至10^4正数,本题未限整数值,故保留这个完整输入域版本。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        vector<string> a;
        string x;
        while (cin >> x)
            a.push_back(x);
        for (size_t i = a.size(); i > 0; --i)
            cout << a[i - 1] << (i == 1 ? '\n' : ' ');
    }
    
    • 1

    信息

    ID
    1726
    时间
    1000ms
    内存
    64MiB
    难度
    入门
    标签
    递交数
    1
    已通过
    1
    上传者