题解 | #反序数#

反序数

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);
}
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务