Форум программистов, компьютерный форум CyberForum.ru

Калькулятор Z-1. Укажите на ошибку в программе к задаче - C++

Восстановить пароль Регистрация
 
Deligor
1 / 1 / 0
Регистрация: 12.04.2014
Сообщений: 30
13.08.2014, 21:21     Калькулятор Z-1. Укажите на ошибку в программе к задаче #1
Уважаемые форумчане, укажите пожалуйста на ошибку в программе.

Пишу программу к задаче, валится на 10 тесте (Wrong Answer). Подскажите, пожалуйста, что не так.

Условие задачи:
Имя входного файла: calcz.in
Имя выходного файла: calcz.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 64 мегабайта
Компания Z готовится к выпуску своего супер пупер мега калькулятора Z-1. Ме-
неджер фирмы обратился к Вам за помощью. Ему необходима программа, которая
могла бы складывать числа практически любой длины. "Если такая программа
будет написана, - говорит он, - это будет переворот в области сложения чисел на
супер пупер мега калькуляторах".

Формат входных данных
Cодержит две строки, на каждой из которых записано длинное неотрицательное
число, содержащее не менее одного знака, но при этом не более 60000 знаков. Ваша
задача - сложить эти два числа и вывести результат в выходной файл.

Формат выходных данных
Должен содержать только одно число - сумму двух исходных чисел.

Пример 1
calcz.in:
3
2
calcz.out:
5

Пример 2
calcz.in:
1000000000000
1000000000001
calcz.out:
2000000000001

Мое решение:
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
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <fstream>
#include <iomanip>
#include <vector>
#include <string>
#include <stdlib.h>
 
using namespace std;
 
ifstream fin;
ofstream fout;
 
typedef vector<int> LongNum;
 
int main(){
    fin.open("calcz.in");
    fout.open("calcz.out");
    LongNum A, B;
    int base = 1000000000, ost = 0;
    string number;
 
    //READ A
    fin >> number;
    for(int i=number.length(); i>=9; i-=9)
        A.push_back( atoi( number.substr(i-9,9).c_str()));
    if(number.length()%9!=0)
        A.push_back( atoi( number.substr(0, number.length()%9).c_str()));
 
    //READ B
    fin >> number;
    for(int i=number.length(); i>=9; i-=9)
        B.push_back( atoi( number.substr(i-9,9).c_str()));
    if(number.length()%9!=0)
        B.push_back( atoi( number.substr(0, number.length()%9).c_str()));
 
    //A+B -> A
    for(int i=0; i<(A.size()>B.size() ? A.size() : B.size()); i++){
        if(i==A.size())
            A.push_back(0);
        A[i] += (i >= B.size() ? 0 : B[i]) + ost;
        ost = (A[i]>=base ? 1 : 0);
        A[i] -= base*ost;
    }
    if(ost==1)
        A.push_back(1);
 
    //WRITE A
    fout << A.back();
    for(int i=A.size()-2 ; i>=0; i--)
        fout << setw(9) << setfill('0') << A[i];
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 21:21     Калькулятор Z-1. Укажите на ошибку в программе к задаче
Посмотрите здесь:

C++ Укажите на ошибку или исправте!!!
C++ Укажите ошибку!
C++ укажите на ошибку в листинге
C++ Вылетает программа, укажите ошибку
Укажите на ошибку C++
Укажите на ошибку C++
Укажите на ошибку C++
C++ Укажите на ошибки в программе

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.08.2014, 08:10     Калькулятор Z-1. Укажите на ошибку в программе к задаче #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Возможно присутствие лидирующих нулей?
Deligor
1 / 1 / 0
Регистрация: 12.04.2014
Сообщений: 30
14.08.2014, 09:29  [ТС]     Калькулятор Z-1. Укажите на ошибку в программе к задаче #3
soon, спасибо за подсказку, добавил удаление лидирующих нулей и все прошло.
Yandex
Объявления
14.08.2014, 09:29     Калькулятор Z-1. Укажите на ошибку в программе к задаче
Ответ Создать тему
Опции темы

Текущее время: 05:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru