天天看點

藍橋杯 基礎練習 BASIC-9 特殊回文數 JAVA

BASIC-9 特殊回文數

問題描述

123321 是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。

輸入一個正整數n, 程式設計求所有這樣的五位和六位十進制數,滿足各位數字之和等于n 。

輸入格式

輸入一行,包含一個正整數n。

輸出格式

按從小到大的順序輸出滿足條件的整數,每個整數占一行。

樣例輸入

52

樣例輸出

899998

989989

998899

資料規模和約定

1<=n<=54。

public static void main(String[] args)
{
	Scanner sc = new Scanner(System.in);

	int n = sc.nextInt();
	for (int i = 10000; i <= 999999; i++)
	{
		int a = i;
		int sum = 0;
		int ans = 0;
		while (a > 0)
		{
			int b = a % 10;//取個位
			sum = sum * 10 + b;//求回文反轉的數
			ans = ans + b;//求每位的和
			a = a / 10;
		}
		if (sum == i && n == ans)
			System.out.println(i);
	}
}
           
//嘿嘿 小小類庫而已
public static void main(String[] args)
{
	Scanner sc = new Scanner(System.in);

	int n = sc.nextInt();
	for (int i = 10000; i <= 999999; i++)
	{
		StringBuilder a = new StringBuilder(String.valueOf(i));
		StringBuilder b = new StringBuilder(a).reverse();
		if (a.toString().equals(b.toString()))
		{
			int sum = 0;
			int x = i;
			while (x > 0)
			{
				sum = sum + x % 10;
				x = x / 10;
			}
			if (sum == n)
				System.out.println(i);
		}
	}
}
           
//打表 用布爾型的數組來存就好了
boolean shu[] = new boolean[10000000];
for (int i = 10000; i <= 999999; i++)
{
	int a = i;
	int sum = 0;
	while (a > 0)
	{
		int b = a % 10;
		sum = sum * 10 + b;
		a = a / 10;
	}
	if (sum == i)
		shu[i] = true;
}
           
boolean shu[] = new boolean[10000000];
for (int i = 10000; i <= 999999; i++)
{
	StringBuilder a = new StringBuilder(String.valueOf(i));
	StringBuilder b = new StringBuilder(a).reverse();
	if (a.toString().equals(b.toString()))
	{
		shu[i] = true;
	}
}
           

閃現