Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверить можно ли ходом короля из одной клетки попасть в другую http://www.cyberforum.ru/cpp-beginners/thread1242224.html
Делать было нечего решил все простые задачи перерешать с сайта. Ближе к делу: Поле шахматной доски определяется парой чисел (a, b), каждое от 1 до 8, первое число задает номер столбца, второе –...
C++ Как удалять определенные значения из массива? Пишу программу по одной задаче, в которой требуется удалить элементы, значение которых меньше среднего арифметического динамического массива. Думал, элемент возможно удалить с помощью delete", но это... http://www.cyberforum.ru/cpp-beginners/thread1242210.html
C++ Fopen не видит путь к файлу
#include <stdio.h> #include <iostream> #include <fstream> #include <string> #include <vector> #include <map> typedef std::map<std::string, std::string> mapss; // An unsigned char can store...
C++ Почему visual studio 2008 не видит директиву #include <iostream>
Здравствуйте! Помогите пожалуйста с решением проблемы. Проблема стоит в том что мой компилятор не видит #include <iostream> и требует ввести "stdafx.h" но если я ее ввожу то у меня перестает видить...
C++ Для каждой открывающей скобки найти позицию ей соответствующей закрывающей скобки http://www.cyberforum.ru/cpp-beginners/thread1242179.html
Доброго времени суток. Подскажите пожалуйста алгоритм или путь к решению задачи, используя СТЕК Дана ПСП, ваша задача для каждой открывающей скобочки найти позицию ей соответствующей закрывающей...
C++ Корректно ли использовать goto? Читал что оператор goto вообще советуют не использовать, кроме разве что глубоких циклов. Но нормально ли это будет, например, вот в таком коде: int main() { char choice; cin >> choice; while... подробнее

Показать сообщение отдельно
Deligor
1 / 1 / 0
Регистрация: 12.04.2014
Сообщений: 30

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

13.08.2014, 21:21. Просмотров 326. Ответов 2
Метки (Все метки)

Уважаемые форумчане, укажите пожалуйста на ошибку в программе.

Пишу программу к задаче, валится на 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru