AOJ0259 All Numbers Lead to 6174

問題リンク All Numbers Lead to 6174

  • 解法

数NをソートすればSになり、SをreverseすればLになります。
入力された数値が1111の倍数なら"NA"です

  • ソース
import java.util.Arrays;
import java.util.Scanner;

//All Numbers Lead to 6174
public class AOJ0259 {

	int next(int n){
		String r = n+"";
		while(r.length()<4)r+="0";
		char[] s = r.toCharArray(), l = new char[4];
		Arrays.sort(s);
		for(int i=0;i<4;i++)l[i]=s[3-i];
		return Integer.parseInt(new String(l))-Integer.parseInt(new String(s));
	}
	
	void run(){
		Scanner sc = new Scanner(System.in);
		for(;;){
			int n = sc.nextInt();
			if(n==0)break;
			if(n%1111==0){
				System.out.println("NA"); continue;
			}
			int res = 0;
			while(n!=6174){
				n = next(n); res++;
			}
			System.out.println(res);
		}
	}
	
	void debug(Object...o){
		System.out.println(Arrays.deepToString(o));
	}
	
	public static void main(String[] args) {
		new AOJ0259().run();
	}
}