andy6804tw
10/9/2017 - 6:30 AM

Q263: Number Chains

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=199

這題就把該字串由大到小剪掉小到大的數串得出的解看是否有重複 ex: 12345 54321-12345=41976 這裡要注意輸出有01234要把頭的0去掉 為了避免TL這邊我用set來儲存不重複的數值

import java.util.*;
public class Main {

	public static void main(String[] args) {
		
		Scanner scn=new Scanner(System.in);
		while(true) {
			int n=scn.nextInt(),tot=0,count=1;
			if(n==0)
				break;
			String arr[]=Integer.toString(n).split(""),x="",y="";
			Set<Integer> set = new HashSet<Integer>();
			System.out.println("Original number was "+n);
			Z:
			while(true) {
				Arrays.sort(arr);
				x="";y="";
				for(int i=0;i<arr.length;i++) {
					y+=arr[i];
					x+=arr[arr.length-1-i];
				}
				tot=Integer.parseInt(x)-Integer.parseInt(y);
				for(int i:set) {
					if(tot==i) {
						System.out.println(Integer.parseInt(x)+ " - " + Integer.parseInt(y) +" = "+tot);
						System.out.println("Chain length "+count);
						System.out.println();
						break Z;
					}
				}
						
				System.out.println(Integer.parseInt(x)+ " - " + Integer.parseInt(y) +" = "+tot);
				arr=Integer.toString(tot).split("");
				count++;
					
				set.add(tot);
			}
			
		}
	}
/*題目:Q263: Number Chains
    作者:1010
    時間:西元 2017 年10 月 */
}