ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1048. Сверхдлинные суммы

Why I got WA?
Послано chinachen 8 апр 2002 18:48
my program as follow:

#include <iostream.h>
void main()
{
    static long int n,a[112000],b[112000],i,t=0;
    int a1,b1,t1;
    cin>>n;
    t1=n%9;
    for(i=1;i<=n%9;i++)
    {
        cin>>a1>>b1;
        a[0]*=10;
        b[0]*=10;
        a[0]+=a1;
        b[0]+=b1;
    }
    if(n%9==0) t=0;
    else t=1;
    for(;i<=n;i++)
    {
        cin>>a1>>b1;
        a[t]*=10;
        b[t]*=10;
        a[t]+=a1;
        b[t]+=b1;
        if((i-t1)%9==0)
            t++;
    }
    for(i=t-1;i>0;i--)
    {
        a[i-1]+=(a[i]+b[i])/1000000000;
        a[i]=(a[i]+b[i])%1000000000;
    }
    a[0]=a[0]+b[0];
    cout<<a[0];
    for(i=1;i<t;i++)
    {
        cout.fill('0');
        cout.width (9);
        cout<<a[i];
    }
}

I store 9 digits in a long type.What's wrong with it?
Can someone give me some test data
And I too. Why ?
Послано sikee8 17 апр 2002 14:32
i don't know whats wrong your program. as my.


#include <iostream.h>

int main ()
{
    bool first = true;
    long n,n9,a,b,back=0,i=0;
    cin >> n;
    while  (i<=n)
    {
        n9=-1;

        do
        {
            cin >> a >> b;
            i++;
            if (first && a==0 && b==0)
                continue;
            n9++;
        } while ( ((a+b) == 9 || (first && !a && !b)) &&
(i<n) );
        if (a+b>9)
        {
            cout << back + 1;
            for (long j=1; j<=n9; j++) cout << 0;
        }
        if (a+b<9)
        {
            if (!first) cout << back;
            for (long j=1; j<=n9; j++) cout << 9;
        }
        back = (a+b)%10;
        if (i==n)
        {
            if (a+b==9)
            {
                if (!first) cout << back;
                for (long j=1; j<=n9; j++) cout << 9;
            }
            cout << back;
            return 0;
        }
        first = false;
    }
    return 0;  //never
}