ブルーブリッジカップ基礎練習特殊回文数java


レコードアルゴリズム点滴
 
基礎練習特殊回文数
タイトルの説明
 
123321は非常に特殊な数で、左から読むのと右から読むのと同じです.
正の整数nを入力し、プログラムはこのような5桁と6桁の10進数をすべて求め、各数字の和がnに等しいことを満たす.
入力
 
説明を入力:
正の整数nを含む行を入力します.
サンプルを入力:
52
しゅつりょく
 
出力の説明:
条件を満たす整数を小さい順に出力し、各整数が1行を占める.
出力サンプル:
899998
989989
998899
 
ヒント
HINT:時間制限:1.0 sメモリ制限:512.0 MB
  1<=n<=54.
 
考え方:
タイトルは5桁と6桁の10進数を要求するので、forループ10000から1000000の間の数が回文を満たし、各桁数の和がnに等しいかどうかだけを必要とするので、この2つの条件を表現するために2つの関数を書いた.f()は,回文であるか否かを判断し,主に文字列の長さの半分を遍歴すればよいが,回文は本来対称であり,is()は各ビット数とnであるか否かを判断する.
 
import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt(); 
		for(int i=10000;i<1000000;i++)
		{
			if(f(i) && is(i,n))
				System.out.println(i);
		}
	}
	
	static boolean f(int x)
	{
		String s=x+"";
		for(int i=0;i0)
		{
			k+=x%10;
			x/=10;
		}
		if(k==n)
			return true;
		else
			return false;
	}

}