九度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;
}


猜你喜欢

转载自blog.csdn.net/heheSakura/article/details/73729121
今日推荐