矢量和巨大的数字 [英] Vectors and huge numbers

查看:153
本文介绍了矢量和巨大的数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用向量来添加两个巨大的数字,例如:


(例如: 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆