九度oj-1064-反序数

题目描述:

设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值

输入:

程序无任何输入数据

输出:

输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开

样例输入:

样例输出:


AC1-中规中矩的写法,但是感觉麻烦,而且稍不注意还容易写错

#include <stdio.h>
int main(){
 
    int i,j,temp;
    int n[4]={0};
    int nine[4]={0};
 
    for(i=1010;i<1112;i++){
        n[0]=i/1000;
        n[1]=i%1000/100;
        n[2]=i%1000%100/10;
        n[3]=i%1000%100%10;
     
        temp=9*i;
        nine[0]=temp/1000;
        nine[1]=temp%1000/100;
        nine[2]=temp%1000%100/10;
        nine[3]=temp%1000%100%10;
 
        if(n[0]==nine[3] && n[1]==nine[2] && n[2]==nine[1] && n[3]==nine[0]) printf("%d\n",i);
 
        for(j=0;j<4;j++){
            n[j]=0;
            nine[j]=0;
        }
     
    }   
    return 0;
}
/**************************************************************
    Problem: 1064
    User: 人气呆毛选手
    Language: C
    Result: Accepted
    Time:0 ms
    Memory:908 kb
****************************************************************/
AC2--查了一下发现了这种洋气的写法,每次取出最低位,然后倒着把依次取出的最低位重新加起来,就成了反序数。

#include <stdio.h>
int main(){

	int i,m,n;

	for(i=1000;i<10000;i++){
		
		n=i;
		m=0;
		while(n){
			m=m*10+n%10;
			n/=10;
		}
		if(m==9*i) printf("%d\n",i);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值