Последовательность из 5 натуральных чисел. Требуется записать их в обратном порядке, при этом переставив все цифры в каждом числе в обратном порядке

Дана последовательность из 5 натуральных чисел. Требуется записать их в обратном порядке, при этом переставив все цифры в каждом числе в обратном порядке.

Входной файл INPUT.TXT содержит 5 натуральных чисел, меньших 1018. Числа разделены пробелами.

В выходной файл OUTPUT.TXT вывеведите сюда полученную последовательность. Числа не должны содержать ведущих нулей.

#include <iostream>
#include <algorithm>
using namespace std;
long perevert(int x)
{
   unsigned long long y = 0;
   while(x)
   {
       y = y*10 + x%10;
       x /= 10;
   }
   return y;
}
int main()
{
    long a, b, c, d, e;
    cin>>a>>b>>c>>d>>e;
    cout<<perevert(e)<<" ";
    cout<<perevert(d)<<" ";
    cout<<perevert(c)<<" ";
    cout<<perevert(b)<<" ";
    cout<<perevert(a)<<" ";
    
}

Заваливает на 13 тесте почему? https://acmp.ru/asp/do/index.asp?main=task&id_course=3&id_section=22&id_topic=172&id_problem=1128


Ответы (1 шт):

Автор решения: Harry

Потому что надо быть последовательным при выборе типов!

Раз числа до 1018 - какие же тут int или long? Все переменные должны быть unsigned long long!

unsigned long long perevert(unsigned long long x)
{
   unsigned long long y = 0;
   while(x)
   {
       y = y*10 + x%10;
       x /= 10;
   }
   return y;
}
int main()
{
    unsigned long long a, b, c, d, e;
    cin>>a>>b>>c>>d>>e;
    cout<<perevert(e)<<" ";
    cout<<perevert(d)<<" ";
    cout<<perevert(c)<<" ";
    cout<<perevert(b)<<" ";
    cout<<perevert(a)<<" ";
    
}

Сколько времени размышляли перед тем, как здесь спрашивать? Минут 5? :)

→ Ссылка