Последовательность из 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 шт):
Потому что надо быть последовательным при выборе типов!
Раз числа до 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? :)