1. 程式人生 > >特殊迴文數字:求出5位數和6位數中各位上的數字之和為n的迴文數。

特殊迴文數字:求出5位數和6位數中各位上的數字之和為n的迴文數。


問題描述
  123321是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。
  輸入一個正整數n, 程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 。
輸入格式
  輸入一行,包含一個正整數n。
輸出格式
  按從小到大的順序輸出滿足條件的整數,每個整數佔一行。
樣例輸入
52
樣例輸出
899998
989989
998899
資料規模和約定
  1<=n<=54。

本體的解題思路可以使先找出迴文數,再判斷各位上的數字之和是否滿足n

int a=num/10000;//萬位
int b=num/1000%10;//千位
int c=num/100%10;//百位
int d=num/10%10;//十位
int e=num%10;個位
原始碼:
#include<stdio.h>
int a(int n)//求出5位數和6位數中的迴文數函式 
{
	int i,j,sum,temp,len;
	int a,b,c;
	for(i=10000;i<1000000;++i)
	{
		sum=0;
		temp=i;
		len=0;
		while(temp!=0)
		{
			sum=sum*10+temp%10;
			temp=temp/10;
			len++;//累計位數以此判斷是5位數還是6位數 
		}
		if(sum==i)//先把迴文數求出來,下面再來比較各位數字之和是否等於n 
		{
			a=i%10;//個位 
			b=i/10%10;//十位
			c=i/100%10;//百位 
			
			if(5==len)
			{
				if(n==(2*a+2*b+c))
				{
					printf("%d\n",i);
				 } 
			}
			if(6==len)
			{
				if(n==(2*a+2*b+2*c))
				{
					printf("%d\n",i); 
				}
			}
		}
	}
}
//主函式 
int main()
{
	int n;
	scanf("%d",&n);
	a(n);
	return 0;
 }