1. 程式人生 > >【ACM】奇怪的迴文數

【ACM】奇怪的迴文數

題目連結:http://acm.nuc.edu.cn/OJ/contest/show/43/1008

【問題描述】

“迴文”是指正讀反讀都能讀通的句子,它是古今中外都有的一種修辭方式和文字遊戲,如“我為人人,人人為我”等。  
在數學中也有這樣一類數字有這樣的特徵,稱為迴文數(palindrome number)。  
設a是一任意自然數。若將a的各位數字反向排列所得自然數b與a相等,則稱a為一回文數。例如1234321為迴文數,1234567則不是迴文數。  
給定一個正整數n,1<=n<=1000000,將n的各位數字反向排列得到一個正整數m,如果n和m的和為迴文數,則稱n為奇怪的迴文數。若n為奇怪的迴文數,輸出“YES”,否則輸出“NO”。

【輸入描述】

資料的第一行是一個T,表示有T組測試資料。  
每組資料為一行,包含一個正整數n。

【輸出描述】

若n為奇怪的迴文數,輸出“YES”,否則輸出“NO”。

一開始的程式碼開設了陣列,又來發現不用! 

#include <stdio.h>
#include <string.h>
int main ()
{
	int T,a,m,n,x,y,z;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&a);
		m=0;n=a;
		while(a>0)
		{
			m=m*10+a%10;
			a/=10;
		}
		m=m+n;
		x=m;
		y=0;
		while(m>0)
		{
			y=y*10+m%10;
			m/=10;
		}
		if(y==x)
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}
	return 0;
}