题解 | #反序数#
反序数
https://www.nowcoder.com/practice/e0d06e79efa44785be5b2ec6e66ba898?tpId=60&tqId=31035&tPage=2&ru=/kaoyan/retest/1001&qru=/ta/tsing-kaoyan/question-ranking
第一种:观察不可能超过1111,所以省略后面循环。
#include <stdio.h>
int reverse (int i)
{
int res = 0;
while (i != 0)
{
res *= 10;
res += i % 10;
i /= 10;
}
return res;
}
int main ()
{
int i;
for (i = 1000; i < 1112; i++)
if (i * 9 == reverse(i))
printf("%d\n", i);
return 0;
}
第二种:参考他人
int main ()
{
//所求数字首位必为1,末位必为9
//设四位数为1ab9,则翻转数为9ba1
int a;
int b;
for(a = 0 ; a < 10; a++)
for(b = 0; b < 10; b++)
//a b 满足的关系为890*a+80==10*b
if(890*a + 80 == 10*b)
printf("%d\n", 1000 + a*100 + b*10 + 9);
}