首页 > 试题广场 >

反序数

[编程题]反序数
  • 热度指数:37846 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值

输入描述:
程序无任何输入数据。


输出描述:
输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开。
示例1

输入

输出

#include <stdio.h>

int Fun(int n){
    int sum = 0;
    while (n) {
        sum *= 10;
        sum += n%10;
        n /= 10;
    }
    return sum;
}

int main(){
    int i;
    for (i = 1000; i <= 9999; i ++) {
        if (Fun(i) == i*9) {
            printf("%d\n", i);
        }
    }
    return 0;
}

发表于 2023-02-22 15:13:05 回复(0)
#include<stdio.h>
void compute(int a,int b,int c,int d){
    if(a==10)
        return;
    if(b==10){
        compute(a+1,0,0,0);
        return;
    }
    if(c==10){
        compute(a,b+1,0,0);
        return;
    }
    if(d==10){
        compute(a,b,c+1,0);
        return;
    }
    int total=a*1000+b*100+c*10+d;
    if(total*9==d*1000+c*100+b*10+a)
        printf("%d",total);
    compute(a,b,c,d+1);
}
int main(){
    compute(1,0,0,0);
    return 0;
}
发表于 2023-02-17 18:46:49 回复(0)
这个数字肯定是以1开头9结尾的,所以直接进行中间两位数字的100次循环就好了,reverse函数也可以省去
#include <stdio.h>

int main(){
    for (int i = 0; i < 10; i++){
        for (int j = 0; j < 10; j++){
            if ((1009 + 100 * i + 10 * j) * 9 == (9001 + 10 * i + 100 * j))
                printf("1%d%d9\n", i, j);
        }
    }
    
    return 0;
}

发表于 2022-02-11 12:55:25 回复(0)
#include <stdio.h>

int main(){
    int a,sum;
    for(int i=1001;i<1112;i++){
        sum=0;
        a=i;
        while(a!=0){
            sum=sum*10+(a%10);
            a=a/10;
        }
        if((i*9)==sum) printf("%d ",i);
    }
}
发表于 2022-01-10 21:03:35 回复(0)
发表于 2022-01-07 17:40:26 回复(0)

问题信息

上传者:小小
难度:
7条回答 8850浏览

热门推荐

通过挑战的用户

查看代码
反序数