矢量和巨大的数字 [英] Vectors and huge numbers
本文介绍了矢量和巨大的数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要使用向量来添加两个巨大的数字,例如:
(例如:
3049358031
+1449238031
)
我没有找到任何东西。
p>我有这个代码(这是不工作): #include< iostream&
#include< vector>
using namespace std;
int main()
{
vector< int> int1;
vector< int> int2;
vector< int>最后;
int input1,input2;
int length = 0,length1 = 0;
cin>> input1>> input2;
cout<< after cin< endl;
string strNum = to_string(input1);
length = strNum.length();
string strNum1 = to_string(input2);
length1 = strNum.length();
if(length> length1){
strNum = to_string(input1);
length = strNum.length();
} else {
strNum1 = to_string(input2);
length1 = strNum.length();
}
cout<<长度;
string q = to_string(input2);
for(int i = 0; i
int1 [i] = strNum.at(i);
int2 [i] = strNum1.at(i);
}
cout<< after ye<< endl;
for(int i = 0; i cout< < int1 [i];
}
return 0;
}
我需要使用 vector< long long>
或向量< int>
?
解决方案
MPZ是您的朋友:
要设置大号码,例如
mpz_set_str(MP_INT * integer,char * initial_value,int base)
>
std :: string add_large(char const * in1,char const * in2,int const SIZE)
{
mp_INT integ1,integ2,result;
mpz_set_str(& integ1,in2,10);
mpz_set_str(& integ2,in2,10);
mpz_add(& result,& integ1,& integ2);
char output [SIZE];
mpz_get_str(output,10,& result);
return output;
}
I need to use vectors to add 2 huge numbers, like this:
(Example:
3049358031
+1449238031
)
I searched everywhere, but I didn't find nothing.
(I have to use only vectors)
I have this code (which is not working):
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> int1;
vector <int> int2;
vector <int> final;
int input1, input2;
int length = 0, length1 = 0;
cin >> input1 >> input2;
cout << "after cin" << endl;
string strNum = to_string(input1);
length = strNum.length();
string strNum1 = to_string(input2);
length1 = strNum.length();
if(length > length1){
strNum = to_string(input1);
length = strNum.length();
} else {
strNum1 = to_string(input2);
length1 = strNum.length();
}
cout << length;
string q = to_string(input2);
for(int i = 0; i < length; i++){
int1[i] = strNum.at(i);
int2[i] = strNum1.at(i);
}
cout << "after ye" << endl;
for(int i = 0; i < length; i++){
cout << " " << int1[i];
}
return 0;
}
Do I need to use vector<long long>
or vector<int>
?
解决方案
MPZ is your friend:
To set your large number e.g.
mpz_set_str (MP_INT *integer, char *initial_value, int base)
And do your thing
std::string add_large( char const * in1, char const * in2, int const SIZE)
{
MP_INT integ1, integ2, result;
mpz_set_str (&integ1, in2, 10);
mpz_set_str (&integ2, in2, 10);
mpz_add (&result, &integ1, &integ2);
char output[SIZE];
mpz_get_str (output, 10, &result);
return output;
}
这篇关于矢量和巨大的数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文