Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 06.03.2017
Сообщений: 109
1

Сложение двух чисел

04.06.2017, 14:16. Показов 5628. Ответов 8
Метки нет (Все метки)

Условие задачи в её названии. Я так понимаю тут длинная арифметика.

Во входном файле два целых неотрицательных числа A и B (A, B ≤ 10^10000).

Выходные данные
В выходной файл выведите число, равное сумме A и B.

Входные данные: 5
3
Выходные:8
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2017, 14:16
Ответы с готовыми решениями:

Вычислить сумму двух длинных бинарных чисел, используя сложение чисел в двоичной системе счисления
Задано положительное и отрицательное число в двоичной системе.Составить программу вычисления суммы...

Сложение двух чисел
Подскажите где ошибка. Спасибо. #include "stdafx.h" #include "iostream" using namespace std;...

Сложение двух чисел
Написать программу сложения двух чисел на Visual c++. Вот мой код. #include "stdafx.h"...

Сложение двух чисел
Сложение двух чисел. Как, если оба числа в диапазоне от 0 до 2*10^9 ? Если складывать 2*10^9 +...

8
с++
1275 / 518 / 223
Регистрация: 15.07.2015
Сообщений: 2,554
04.06.2017, 14:30 2
в чем проблема?
0
12 / 12 / 10
Регистрация: 04.06.2017
Сообщений: 99
04.06.2017, 14:57 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream in("input.txt");   // ВХОДНЫЕ ДАННЫЕ
ofstream out("output.txt"); // Выходные данные
int n1;
int n2;
in >> n1 >> n2;
out << n1+n2;
system("pause");
return 0;
}
0
Модератор
Эксперт С++
11482 / 9400 / 5649
Регистрация: 18.12.2011
Сообщений: 25,109
04.06.2017, 15:00 4
savenkodenys, как Вы собираетесь поместить в int число 1010000
0
1 / 1 / 0
Регистрация: 06.03.2017
Сообщений: 109
04.06.2017, 15:11  [ТС] 5
savenkodenys, я так тоже делала, и не вышло, потому что число может быть большое
0
92 / 68 / 22
Регистрация: 17.10.2011
Сообщений: 235
04.06.2017, 17:54 6
можно менять shift от 1 до 9, а если вместо базового типа поставить uint64_t, то и до 18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <map>
#include <sstream>
#include <cmath>
#include <functional>
#include <iomanip>
using namespace std;
 
const int shift=1;
const int base=pow(10,shift);
 
void str_to_vec(string str,map<int,uint>& v){
    for(int i=str.size(),index=0;i>0;i-=shift,index++){
        string substr=(i<shift)?str.substr(0,i):str.substr(i-shift,shift);
        stringstream ss(substr);
        uint x;
        ss>>x;
        v[index]=x;
    }
}
 
int main()
{
    string A="123458888888888888888";
    string B="2222222222222222220";
    map<int,uint> d1,d2,d3;
    str_to_vec(A,ref(d1));
    str_to_vec(B,d2);
 
    uint carry=0;
    for(int i=0;i<d1.size() || i<d2.size();i++){
        uint r=(d1[i]+d2[i]+carry)%base;
        carry=(r<d1[i])?1:0;
        d3[i]=r;
    }
    if (carry) d3[d3.size()]=carry;
    
    for(auto it=d1.rbegin();it!=d1.rend();it++) cout<<setfill('0')<<setw(shift)<<it->second<<" ";cout<<endl;
    cout<<"+"<<endl;
    for(auto it=d2.rbegin();it!=d2.rend();it++) cout<<setfill('0')<<setw(shift)<<it->second<<" ";cout<<endl;
    cout<<"="<<endl;
    for(auto it=d3.rbegin();it!=d3.rend();it++) cout<<setfill('0')<<setw(shift)<<it->second<<" ";cout<<endl;
}
1
503 / 246 / 74
Регистрация: 31.10.2010
Сообщений: 741
05.06.2017, 00:41 7
MariaFitzgerald, используйте библиотеку для работы с длинными числами, например, вот эту GMP
1
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
05.06.2017, 09:35 8
Лучший ответ Сообщение было отмечено MariaFitzgerald как решение

Решение

Вот тут хороший метод реализован
1
Любитель чаепитий
3673 / 1748 / 544
Регистрация: 24.08.2014
Сообщений: 5,889
Записей в блоге: 1
05.06.2017, 09:50 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
 
int main()
{
    using boost::multiprecision::cpp_int;
    
    cpp_int first;
    cpp_int second;
    
    std::cin >> first >> second;
    
    std::cout << (first + second);
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2017, 09:50

Сложение двух чисел
P.S Код должен выполнять аналогию сложения двух числе в столбик. Добавлено через 34 секунды

Сложение двух больших чисел
#include &lt;vector&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; int main() { ...

Сложение двух чисел на TurboC++
Всем привет! Подскажите, в чем ошибка с переменной с? Вот скрины - Коды программ надо...

Рекурсия: сложение двух чисел
Написать рекурсивную программу сложения двух чисел........ помогите срочно нужно


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru