加载中...

信息奥赛题解|Excel


信息奥赛题解|Excel


🚀 题目浏览

【题目描述】

有天小 C 在操作 excel,他发现一个有意思的事情:对数字单元进行下拉可以得到递增的序列,对含有数字的单元格同样有效果。

作为一名立志成为 ACM 大牛的小 C 开始思考如何用C语言实现这个功能。那么作为 ACMer的你会选择怎么来实现这个功能呢?

【输入】

每组测试数据有一行,一个含有英文字母和数字的字符串和一个整数 $m$,$m$ 表示下拉 $m$ 个单元格。

【输出】

输出 $m+1$ 行,表示下拉 $m$ 个单元格的结果。

【输入样例】

abc123de 3

【输出样例】

abc123de
abc124de
abc125de
abc126de

☘️ 题解分析

考察字符串的处理。

注意 C++ 中 stoi() 函数 与 s.substr(pos, n) 方法的使用。


🧑🏻‍💻 C++ 代码

#include<bits/stdc++.h>

using namespace std;
typedef long long LL;
int n;
string s;

int main() {
    cin >> s >> n;

    // 获取整数所在的起点与终点
    int st, ed, flag = 1;
    for (int i = 0; i < s.size(); i++) {
        if (isdigit(s[i]) && flag) {
            st = i, flag = 0;
            while (isdigit(s[i])) i++;
            ed = i; // 获取终点后一个位置,方便使用substr截取
            break;
        }
    }

    // 截取数字
    // stoi函数可以将string转为int
    // substr(pos, n)的第二个参数需要注意
    int x = stoi(s.substr(st, ed - st));

    // 下拉输出
    for (int i = 0; i <= n; i++) {
        for (int j = 0; j < st; j++) cout << s[j];
        cout << to_string(x + i);
        for (int j = ed; j < s.size(); j++) cout << s[j];
        cout << endl;
    }

    return 0;
}

文章作者: Rickyの水果摊
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Rickyの水果摊 !
  目录