在网上查了一下,有句
If two numbers reverse to the same number (e.g., 3 and 30), the smaller unreversed one should appear first in the output.
这样题目才完整正常。
然后再看“输出样例”,22到39,且说明“包括这两个数本身”,难道不应该是输出18个数字嘛,看你给出的“输出样例”才17个。
这种稀里糊涂不严谨的题目,如果是老师强制要求的,随便应付一下就是了
程序代码:
#include <algorithm>
#include <utility>
#include <cstdio>
using namespace std;
inline unsigned decimal_reverse( unsigned n )
{
unsigned r = 0;
for( ; n!=0; n/=10 )
r = r*10 + n%10;
return r;
}
int main( void )
{
unsigned a, b;
scanf( "%u%u", &a, &b );
pair<unsigned,unsigned> buf[101]; // “两个数之差不超过100”是指最多101个数么?
const size_t len = b-a+1;
for( size_t i=0; i!=len; ++i )
{
buf[i].first = (unsigned)(a+i);
buf[i].second = decimal_reverse( buf[i].first );
}
sort( buf, buf+len, [](const auto& lhs, const auto& rhs){return lhs.second==rhs.second ? lhs.first<rhs.first : lhs.second<rhs.second;} );
for_each( buf, buf+len, [](const auto& vp){printf("%u\n",vp.first);} );
}