在 c++14 中回答时 spoj 的运行时错误(SIGXFSZ)

问题描述 投票:0回答:0

这是我的代码:

#include <iostream>
#include <string>
#include <utility>
int main(){
    std::string swapInt, b;
    int testCase, integer;
    bool loop;
    std::cout<<"Enter the testCase: ";
    std::cin>>testCase;
    while(testCase--){
        std::cout<<"Enter the integer: ";
        std::cin>>integer;
        int a = integer;
        loop = true;
        if(a >= 1000000 || a<=0){
            std::cout<<"Error, number too extreme"<<std::endl;
            loop = false;
            testCase++;
        }
        while(loop){
            std::string temp = std::to_string(integer);
            b = temp;
            swapInt = b;
            for(long long unsigned int i=0;i<b.size()/2;i++){
                std::swap(swapInt[i], swapInt[swapInt.size()-i-1]);
            }
            if(swapInt==b){
                loop = false;
                break;
            }else{
                int temp2 = std::stoi(b);
                temp2++;
                integer = temp2;
            }
        }
        if(a >= 1000000 || a<= 0){
            continue;
        }else{
            std::cout<<"Nearest Palindrome is: "<<b<<std::endl;
        }
    }
    return 0;
}

一切都很完美,但一件奇怪的事情是,如果我输入 10000000000000000000 作为整数,我会得到一个无限循环:

Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
(and so on)

但是对于 1000000 或更多一点它工作得很好,只是:

Enter the integer: 10000000
Error, number too extreme
Enter the integer:

我是 C++ 的新手,试图把我的第一个问题做对,接下来我应该做什么?

c++ c++14
© www.soinside.com 2019 - 2024. All rights reserved.