当我在我的系统上运行时,此代码会成功执行 但是当我在codechef上提交代码时,它会收到运行时错误(运行时错误(SIGABRT))。
此处是问题http://www.codechef.com/problems/LELUCKYN
的链接这是什么错误,我该如何解决?
#include <iostream>
#include <vector>
#include <cmath>
#include <string>
using namespace std;
int main() {
int t;
cin >> t;
for ( auto i = 1; i <= t; i++ ) {
int n;
cin >> n;
vector<int> vec(n);
for ( auto in = 0; in < n; in++ ) {
int input;
cin >> input;
vec[in] = input;
}
int count = 0;
for (int x = 0; x < vec.size(); x++ ) {
for ( int y = x; y < vec.size(); y++ ) {
string num="";
for (int z = x; z <= y; z++ ) {
num.append(to_string(vec[z]));
}
int number = stoi(num);
int c4 = 0, c7 = 0;
while ( number != 0 ) {
int d = number % 10;
if ( d == 4) c4++;
else if (d ==7 ) c7++;
number/= 10;
}
int po = (int)pow( c4, c7 );
if (c4 != 2 && c7 != 2 && po <= ( ( y - x ) + 1 )) count++;
}
}
cout << count << endl;
}
}
答案 0 :(得分:0)
如果我正确阅读了您的代码,您将所有数字连接成一个字符串,然后尝试将其转换为int
以计算数字。
该字符串并不总是可以转换为int
,因为它太大了,stoi
在这种情况下会抛出异常。
您可以只计算结果字符串中的数字(计数'4'
和'7'
而不是4
和7
s),或< / em>您可以计算每个数字中的数字并将其相加,而无需进行字符串转换。