C++ 为什么数字在C++;?
给定以字符串表示的两个非负整数num1和num2,返回num1和num2之和C++ 为什么数字在C++;?,c++,string,vector,data-structures,long-integer,C++,String,Vector,Data Structures,Long Integer,给定以字符串表示的两个非负整数num1和num2,返回num1和num2之和 class Solution { public: vector<int> addToArrayForm(vector<int>& A, int K) { int i=A.size()-1; vector<int> result={}; long long int no=0; for(int x:A) {
class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K) {
int i=A.size()-1;
vector<int> result={};
long long int no=0;
for(int x:A)
{
no=no+x*pow(10,i);
i--;
}
no=no+K;
if(no==0)
return {0};
while(no>0)
{
long long int r=no%10;
result.push_back(r);
no=no/10;
}
reverse(result.begin(),result.end());
return result;
}
};
类解决方案{
公众:
向量addToArrayForm(向量&A,整数K){
int i=A.size()-1;
向量结果={};
长整型否=0;
for(int x:A)
{
no=no+x*pow(10,i);
我--;
}
no=no+K;
如果(否==0)
返回{0};
而(否>0)
{
长整型r=no%10;
结果:推回(r);
否=否/10;
}
反向(result.begin(),result.end());
返回结果;
}
};
我在long-long中遇到了这个错误
第9行:Char 14:运行时错误:1e+19超出“long long”(solution.cpp)类型的可表示值的范围
小结:未定义的行为程序:未定义的行为程序已加入。cpp:18:14也许初始化
std::vector result
将解决您的问题。因为你把它定义为一个整数,但是你把它定义为一个长变量
或者您可以使用static\u cast
为正在进行的alegorithm(cppref:)转换类型temprory
免责声明:我回答了,因为我不能评论(我没有50个rep)如果
long
是由有符号的64位整数实现的,1e19确实超出了该类型的正范围。该类型的最大可表示值为9223372036854775807
至于1e19是否是一个可能的值,这是因为它取决于作为输入传递的向量
a
的大小。您可能希望通过添加对的检查,将算法限制为只接受某个大小的A
。A
可以是任意大小。您的编译器告诉您,如果A大于19个元素,此函数将生成溢出。同时请注意,是的,我现在将处理优化的解决方案