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

如何保留大整数中的所有4并删除其他数字(多测试用例场景)

解决方案:处理超大整数并保留所有数字4

你的代码存在两个核心问题:

  • 给定的大整数长度远超unsigned long long的存储上限(该类型最多容纳约20位十进制数),用数值类型读取会直接溢出,导致数据错误。
  • 代码仅统计4的个数,未实现保留所有4的需求。

正确的做法是将大整数当作字符串处理,这样既不会有溢出问题,也能轻松筛选出所有'4'字符。修改后的代码如下:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int t;
    cin >> t;
    while(t--)
    {
        string s;
        cin >> s; // 直接读取整串数字,无溢出风险
        string result;
        for(char c : s)
        {
            if(c == '4')
            {
                result += c;
            }
        }
        cout << result << "\n";
    }
    return 0;
}

代码说明:

  • 用string存储大整数,彻底避免数值类型的溢出问题。
  • 遍历字符串每个字符,将所有匹配'4'的字符追加到结果字符串中,自然保留原顺序。
  • 输入方式采用cin >> s,适用于无空格的纯数字输入场景,无需额外处理换行符。

如果输入的大整数可能包含换行或空格,可改用getline读取,同时注意处理测试用例数输入后的换行残留:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int t;
    cin >> t;
    cin.ignore(); // 忽略输入t后的换行符
    while(t--)
    {
        string s;
        getline(cin, s);
        string result;
        for(char c : s)
        {
            if(c == '4')
            {
                result += c;
            }
        }
        cout << result << "\n";
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:15:37